通常のユーザーとして次のコマンドを実行すると、すべてが正常です。
$(dirname `readlink -f $0`)
ただし、ルートに切り替えた後、次のエラーが発生しました。
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
どんなアイデアがありますか? bashシェルを実行しているローカルFedora 16とAmazon EC2を試してみました。
申し訳ありません。ここではこの問題について詳しく説明していません。シナリオは次のとおりです。
一般ユーザーアカウントを使用する:
$ 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
ベストアンサー1
これはユーザーのログインシェルと同じエラーでなければなりません。ログインシェルでは、シェル引数は、ログインシェルを表すマイナス記号が与えられると、0
現在のプロセスの名前に拡張されるためです。これで、エラーがどこで発生しているかを-bash
確認できます。-b
試してみてください
echo "$( dirname "$(readlink -f -- "$0")" )"