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

シェルスクリプトはどこから実行されますか?

/usr/binにシェルスクリプトがあります 。それをhelloと呼びましょう 。

これが含まれています:

 echo "I am located in $PWD"
 echo "I am called from this directory: ???"

helloを実行しています /home/Documentsから 次の出力を期待しています:

 I am located in /usr/bin
 I am called from this directory: /home/Documents

スクリプトが実行されるディレクトリパスを取得するにはどうすればよいですか?

承認された回答:

別の回答にコメントできないので、ここに投稿します。前述のように、dirname $0を読み取るだけです ディレクトリ名を取得するので、../../directory/something.shのような名前を付けた場合 これらのドットは解決されませんが、../../directoryが返されます。 。 cdでサブシェル拡張を使用する代わりに およびpwd 、非常にスマートなコマンドreadlinkを使用できます これは、点線のディレクトリだけでなく、すべてのシンボリックリンクも実際に解決します。したがって、私は提案します

  echo "I am located at $(readlink -e -- "$0")"

別のdirnameを使用できます このあたりで、ファイルの代わりにディレクトリを取得します。


Linux
  1. Linux シェルから、現在とは異なる作業ディレクトリでプログラムを実行するにはどうすればよいですか?

  2. Pythonスクリプトを使用してシェルの作業ディレクトリを変更する

  3. シェルスクリプトの現在のディレクトリ?

  1. 起動時にシェルスクリプトを実行する方法

  2. 変数でディレクトリを変更するシェルスクリプト

  3. コンテナー内で docker-compose コマンドからシェル スクリプトを実行します。

  1. シェルスクリプトを常にルートとして実行する方法は?

  2. 別のディレクトリからスクリプトを実行する

  3. 別のユーザーとしてシェル スクリプトを実行する