私はbashスクリプトファイルを持っています。これは$PATHに追加されたディレクトリの下に置かれ、どのディレクトリからでもスクリプトを呼び出すことができます。
スクリプトと同じディレクトリの下に別のテキストファイルがあります。スクリプトでテキストファイルを参照する方法を知りたいですか?
たとえば、スクリプトがテキストファイルのコンテンツを出力するだけの場合、cat textfile 別のディレクトリからスクリプトを呼び出すと、テキストファイルが見つからないため、機能しません。
承認された回答:
(パス拡張またはスクリプト自体に)シンボリックリンクがない限り、これらは同じように機能するはずです:
-
MYDIR="$(dirname "$(realpath "$0")")" -
MYDIR="$(dirname "$(which "$0")")" -
上記のいずれかの2ステップバージョン:
MYSELF="$(realpath "$0")"MYDIR="${MYSELF%/*}"
スクリプトへの途中にシンボリックリンクがある場合は、which そのリンクの解決を含まない回答を提供します。 realpathの場合 はデフォルトでシステムにインストールされていません。ここで見つけることができます。
[編集]: realpathのようです readlink -fに勝る利点はありません カレブによって提案されたように、おそらく後者を使用する方が良いでしょう。私のタイミングテストでは、実際には高速であることが示されています。