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