2017-05-23 19 views
0

3つの異なるディレクトリに3つのshスクリプトがあります。環境を変更せずにシェルスクリプトを実行する

各ディレクトリに移動して各スクリプトを実行する代わりに、上のスーパーフォルダにある1つのセントラルスクリプトから3つのスクリプトをすべて起動したかったのです。

私は/bin/bash /path/to/scriptを使用してみましたが、これはで作業する場所としてsuperfolderの場所を引き受ける。

そこで私は、実行する前に、各フォルダの最初のcd folder1に入ってみましたが、それはどちらか動作しないでしょう。私はちょうど

+0

* 'cd folder1'を使って正確に何がうまくいかなかったのですか?組み込みの 'cd'コマンドのまわりに何らかのエイリアスやラッパーがない限り、親スクリプトでそのコマンドを実行してから対話シェルのフォルダに変更することに違いはありません。 – chepner

答えて

1

そのローカル環境を変更せずに、これらの3つのスクリプトをトリガしたい

は、次のことを試してください:()は、スクリプト、現在のディレクトリを習得保存/復元するために必要とされること

(cd dir1; ./script1) 
(cd dir2; ./script2) 
(cd dir3; ./script3) 

注意を。サブシェルを使用して

+1

追加のプロセスを生成する必要はありません。 'cd dir1;と同様にできます。 ./script1; cd -'など – user1934428

+0

もちろん、それは別のオプションになります... –

0

は、サブシェルが終了したときに、現在のシェルが

(cd path ; ./script) 
0

に変更されていないこれを行うには、* nixの方法は、あなたが最初に行ったように彼らの完全または相対パスでスクリプトを実行することです。元のユーザーのために、PWDが何であっても、スクリプトは理想的には同じことを行う必要があります。 が本当にの場合はthe working directory of the scriptを知っておく必要があります。近隣のファイルを調達するなどの理由から、複雑さが増して古代のBashバージョンでは動作しない可能性があることに注意してください。

関連する問題