$(dirname `readlink -f $0`) の奇妙な動作

$(dirname `readlink -f $0`) の奇妙な動作

通常のユーザーとして次のコマンドを実行すると、すべてが正常です。

$(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")" )"

おすすめ記事