Quando executo o seguinte como um usuário normal, tudo está bem:
$(dirname `readlink -f $0`)
mas depois que mudei para root, ocorreu o seguinte erro:
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
Alguma ideia? Eu tentei no Fedora 16 local e no Amazon EC2, ambos executando o shell bash.
editar para ilustração.
desculpe-me por não ilustrar mais a questão aqui. aqui está o cenário:
usando uma conta de usuário normal:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
usando 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
--
indica ("menos menos" ou "traço")? Nevermind - Encontrei a resposta aqui: /unix//q/11376Se você realmente deseja o nome do diretório do script de shell que está sendo executado:
Sim, é um pouco grosseiro, mas é seguro.
Se você quiser o shell atual, tente a sugestão de @ MichaelMrozek de usar
$SHELL
.fonte