通常のユーザーとして以下を実行すると、すべて問題ありません。
$(dirname `readlink -f $0`)
しかし、rootに切り替えた後、次のエラーが発生しました。
readlink: invalid option -- 'b'
Try `readlink --help' for more information.
dirname: missing operand
Try `dirname --help' for more information.
何か案は?ローカルのFedora16とAmazonEC2を試してみましたが、どちらもbashシェルを実行しています。
説明のために編集します。
ここで問題をさらに説明しなかったことをお詫びします。シナリオは次のとおりです。
通常のユーザーアカウントを使用する:
$ pwd
/home/myuser
$ export MY_DIR=$(dirname `readlink -f $0`)
$ echo MY_DIR
/home/myuser
ルートの使用:
# 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
これは、ユーザーログインシェルの場合と同じエラーである必要があります。ログインシェルでは、0
シェルパラメータが現在のプロセスの名前に展開される-bash
と、マイナスがログインシェルを示すためです。これで、-b
エラーの原因がわかります。
代わりに試してください
echo "$( dirname "$(readlink -f -- "$0")" )"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加