RedHat 6でbashを使用してソーススクリプトディレクトリを取得する方法

RedHat 6でbashを使用してソーススクリプトディレクトリを取得する方法

私がソーシングしているスクリプトのパスを取得しようとしています。私は次のことをしています:

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 ]}

おすすめ記事