Gdy uruchamiam następujące funkcje jako zwykły użytkownik, wszystko jest w porządku:
$(dirname `readlink -f $0`)
ale po przejściu na root wystąpił następujący błąd:
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
Jakieś pomysły? Próbowałem na lokalnej Fedorze 16 i Amazon EC2, oba działające w powłoce bash.
edytuj dla ilustracji.
przepraszam, że nie zilustrowałem tutaj problemu. oto scenariusz:
używając zwykłego konta użytkownika:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
za pomocą roota:
# 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
--
oznaczają („minus minus” lub „myślnik”)? Nevermind - znalazłem odpowiedź tutaj: /unix//q/11376Jeśli naprawdę chcesz nazwę katalogu uruchamianego skryptu powłoki:
Tak, jest trochę za ciasno, ale jest bezpiecznie.
Jeśli chcesz mieć bieżącą powłokę, możesz wypróbować sugestię @ MichaelMrozek dotyczącą użycia
$SHELL
.źródło