GNU/Linux >> Linux の 問題 >  >> Linux

$ pathにあるスクリプトの同じディレクトリの下にあるファイルを参照しますか?

私はbashスクリプトファイルを持っています。これは$PATHに追加されたディレクトリの下に置かれ、どのディレクトリからでもスクリプトを呼び出すことができます。

スクリプトと同じディレクトリの下に別のテキストファイルがあります。スクリプトでテキストファイルを参照する方法を知りたいですか?

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

承認された回答:

(パス拡張またはスクリプト自体に)シンボリックリンクがない限り、これらは同じように機能するはずです:

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

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

  • 上記のいずれかの2ステップバージョン:

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

    MYDIR="${MYSELF%/*}"

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

[編集]: realpathのようです readlink -fに勝る利点はありません カレブによって提案されたように、おそらく後者を使用する方が良いでしょう。私のタイミングテストでは、実際には高速であることが示されています。


Linux
  1. Linuxのディレクトリツリーで最も古いファイルを見つける方法

  2. フォルダから最も古いファイルを削除するためのBashスクリプト?

  3. 入力ファイルと同じ名前のファイルに保存する出力?

  1. すべての端末出力をファイルに保存しますか?

  2. Linuxのユーザーホームディレクトリの下にある.bash_profileファイルの目的は何ですか

  3. Bash スクリプトのスクリプト ファイル名を知るにはどうすればよいですか?

  1. コアがダンプされましたが、コア ファイルが現在のディレクトリにありませんか?

  2. スクリプトの同じ行で stderr と stdout を別のファイルにリダイレクトする方法は?

  3. コンパイル時に「SDL.h no such file or directory found」