Когда я запускаю следующее как обычный пользователь, все нормально:
$(dirname `readlink -f $0`)
но после того, как я переключился на root, произошла следующая ошибка:
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
Есть идеи? Я попробовал на локальной Fedora 16 и Amazon EC2, обе работают под управлением оболочки bash.
редактировать для иллюстрации.
извиняюсь, что я не проиллюстрировал эту проблему здесь. вот сценарий:
используя обычную учетную запись пользователя:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
используя root:
# pwd
/root
# export ROOT_DIR=$(dirname `readlink -f $0`)
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
# export ROOT_DIR=echo $(dirname `readlink -f -- $0`)
# echo $ROOT_DIR
/root
--
(«минус минус» или «тире»)? Неважно - я нашел ответ здесь: /unix//q/11376Если вы действительно хотите имя каталога запускаемого сценария оболочки:
Да, это немного грязно, но это безопасно.
Если вам нужна текущая оболочка, вы можете попробовать @ MichaelMrozek предложить использовать
$SHELL
.источник