Linux シェルを使用して、現在の作業ディレクトリとは異なる作業ディレクトリでプログラムを起動するにはどうすればよいですか?
たとえば、現在のディレクトリにhelloworld
ファイルを作成するバイナリ ファイルがあります。このファイルはディレクトリ 内にあります。hello-world.txt
/a
現在、私はディレクトリ にいます/b
。プログラムの実行を開始し../a/helloworld
、hello-world.txt
3 番目のディレクトリのどこかを取得したいと考えています/c
。
ベストアンサー1
次のようにプログラムを呼び出します。
(cd /c; /a/helloworld)
括弧によりサブシェルが生成されます。このサブシェルは作業ディレクトリを に変更し/c
、helloworld
から実行します/a
。プログラムが終了すると、サブシェルは終了し、開始したディレクトリにある親シェルのプロンプトに戻ります。
エラー処理:ディレクトリを変更せずにプログラムが実行されないようにするには、たとえば のスペルを間違えた場合などに/c
、 の実行をhelloworld
条件付きにします。
(cd /c && /a/helloworld)
メモリ使用量の削減: hello world の実行中にサブシェルがメモリを浪費するのを避けるには、helloworld
exec 経由で呼び出します。
(cd /c && exec /a/helloworld)
[感謝ジョシュとジュリアーノこの回答を改善するためのヒントを提供してくれたことに感謝します。