Ну, тривиальное (возможно, обманывающий) путь должно было бы работать:
mysql -NBe "select password('right')"
Это произведет пароль с помощью любой схемы хеширования пароля версия использования mysql. [РЕДАКТИРОВАНИЕ: добавленный-NB, который избавляется от имен столбцов и искусства таблицы ASCII.]
Действительно ли realpath является фактической командой или сценарием? Я проверил бы для наблюдения, куда это прибывает из.
$ type -a realpath
Я не знаком с этим инструментом, и таким образом, это вероятно не часть Вашего нормального распределения, возможно, это установлено в нестандартном месте, которое не присутствует на Bash $PATH
но в Вашей среде входа в систему $PATH
.
В любом случае, вышеупомянутое type
команда покажет Вам, куда команда прибывает из, в которой точке можно изменить метод, как который Вы называете ее в своем сценарии так:
echo $(/path/to/realpath test.sh)
Или исправьте свой сценарий $PATH
так, чтобы это также включало это нестандартное местоположение.
Большая часть Вашей среды не становится названной при вызове сценария оболочки. Если Вы думаете об этом, это имеет большой смысл, так как Вы обычно не хотите, чтобы сценарии имели весь дополнительный багаж, который может иметь среда пользователя.
Можно или определить, какой исходный файл обеспечивает, эта функция и или получает его или просто дает Bash команду включать среду входа в систему.
#!/bin/bash -l
echo $(realpath "$1")
Существует по крайней мере две названные программы realpath
:
readlink -f
. Это теперь удерживается от использования в пользу readlink -f
, столько дистрибутивов прекратило нести его.realpath
программа представлена в GNU coreutils 8.15. Это слишком старо, чтобы быть в Debian, сжимают или даже хрипящий; во время записи нестабильный Debian не поставляет его также. Эта программа очень близко к readlink -f
.По некоторым причинам у Вас есть функция оболочки, которая частично эмулирует поведение realpath
. Эта эмуляция неравнодушна: при вызове его на символьной ссылке это не переходит по символьной ссылке.
Так как это - функция оболочки, по-видимому, загруженная из или через .bashrc
, это только доступно для кодирования выполнения в интерактивной оболочке. Если Вы хотите, чтобы это было доступно другим программам, предположив, что Вы запускаете Linux, создаете сценарий, который эмулирует realpath
:
#!/bin/sh
readlink -f -- "$@"
(Это не эмулирует realpath
редко используемые параметры командной строки.)
realpath
программу считают удержанной от использования coreutils, или что это не создается по умолчанию. Таким образом, Debian должен удалять его.
– Kaz
27.04.2014, 17:36
realpath
двоичный файл, который близок, но не точно идентичен readlink -f
. Debian стабильные переносы 8.13. Нестабильный Debian принял решение сохранить программу прежней версии.
– Gilles 'SO- stop being evil'
27.04.2014, 20:18
Это работает только в shell, потому что файл сценария имеет другую область видимости и не имеет доступа к вашим локальным функциям и псевдонимам, определенным в ваших rc файлах. А команда realpath
фактически не существует в вашей системе.
Поэтому либо установите realpath
из пакета, определите свою собственную функцию (как часть скрипта, проверьте некоторые примеры), либо найдите файл rc в вашем скрипте, где она определена (например, . ~/.bashrc
).
Вот шаги для установки realpath
, если его нет:
sudo apt-get install coreutils
brew install coreutils
На Debian или Ubuntu, похоже, realpath
должен быть установлен по умолчанию. Я проверил в недавнем Debian 8 (Jessie) и, кажется, coreutils
установлен по умолчанию.
Проверено с помощью свежих образов VM:
$ vagrant init debian/jessie64 && vagrant up --provider virtualbox && vagrant ssh
$ vagrant init ubuntu/vivid64 && vagrant up --provider virtualbox && vagrant ssh
Затем в VM:
$ type -a realpath
realpath is /usr/bin/realpath
Вместо realpath
вы также можете использовать readlink -f file
(или greadlink
), предоставляемый пакетом coreutils
.
#!/bin/bash -l
. – slm♦ 13.11.2013, 22:18realpath
. Моя система Fedora 19 действительно теперь включает этот инструмент. Также заметьте, что OP использовал ядро Debian w/2.6, таким образом, его система также будет отсутствоватьrealpath
учитывая его возраст. – slm♦ 05.05.2014, 05:32command
было все еще полезно для меня. Это - более портативный способ сделать то, что я показывал через оболочки POSIX. – slm♦ 05.05.2014, 05:38