
私がソーシングしているスクリプトのパスを取得しようとしています。私は次のことをしています:
DIR="$(dirname "$(readlink -f "$0")")"
それにもかかわらず私は得る
readlink: invalid option -- 'b'
私はRedHat 6マシンでbashを使用しています。この作業を別にする必要があるかどうかはわかりません。
答え1
使用${BASH_SOURCE[-1]}
:
script_dir=$( dirname "$( readlink -f "${BASH_SOURCE[-1]}" )" )
これは現在のシェル関数呼び出しスタックのソースファイルを含む配列であり、最後の要素は基本スクリプトのソースコードになります。
これはスクリプトのソースに関係なく機能するはずですsource
。
bash
使用している特定のバージョンはバージョン4.2.1です。バージョン4.3では、配列の負のインデックス(配列の最後で参照)が追加されました。${BASH_SOURCE[-1]}
4.3 以前のバージョンと同じ効果を得るには、bash
以下を使用します。
${BASH_SOURCE[ ${#BASH_SOURCE[@]} - 1 ]}
答え2
私が正しく理解したら、次のように動作します。
whereami=$(pwd)
echo $whereami