$ PATHのスクリプトと同じディレクトリにあるファイルを参照します。

$ PATHのスクリプトと同じディレクトリにあるファイルを参照します。

すべてのディレクトリからスクリプトを呼び出すために、$ PATHに追加されたディレクトリにbashスクリプトファイルがあります。

スクリプトと同じディレクトリに異なるテキストファイルがあります。スクリプトでテキストファイルを参照する方法が疑問に思います。

たとえば、スクリプトがテキストファイルの内容のみを出力する場合、他のディレクトリからスクリプトをcat textfile呼び出すとテキストファイルが見つからないため機能しません。

ベストアンサー1

パス拡張やスクリプト自体にシンボリックリンクがない限り、次は同じように機能します。

  • MYDIR="$(dirname "$(realpath "$0")")"

  • MYDIR="$(dirname "$(which "$0")")"

  • 上記の2段階バージョン:

    MYSELF="$(realpath "$0")"

    MYDIR="${MYSELF%/*}"

スクリプトにシンボリックリンクがある場合、そのwhichリンクの解決を含まない答えが提供されます。realpathシステムにデフォルトでインストールされていない場合ここで見つけることができます。

[編集する]:realpath特にメリットがないようだからreadlink -f ケイロップが提案する、後者を使用する方が良いかもしれません。私のタイミングテストでは、実際にはより速いことがわかりました。

おすすめ記事