Panggil program seperti ini:
(cd /c; /a/helloworld)
Tanda kurung menyebabkan sub-kulit muncul. Sub-kulit ini kemudian mengubah direktori kerjanya menjadi /c
, lalu jalankan helloworld
dari /a
. Setelah program keluar, sub-shell berhenti, mengembalikan Anda ke perintah shell induk, di direktori tempat Anda memulai.
Penanganan kesalahan: Untuk menghindari menjalankan program tanpa mengubah direktori, mis. ketika salah mengeja /c
, lakukan eksekusi helloworld
bersyarat:
(cd /c && /a/helloworld)
Mengurangi penggunaan memori: Untuk menghindari pemborosan memori subkulit saat hello world dijalankan, panggil helloworld
melalui exec:
(cd /c && exec /a/helloworld)
[Terima kasih kepada Josh dan Juliano karena telah memberikan kiat untuk menyempurnakan jawaban ini!]
Mirip dengan jawaban David Schmitt, ditambah saran Josh, tetapi tidak membiarkan proses shell berjalan:
(cd /c && exec /a/helloworld)
Cara ini lebih mirip dengan cara Anda biasanya menjalankan perintah di shell. Untuk melihat perbedaan praktisnya, Anda harus menjalankan ps ef
dari shell lain dengan setiap solusi.
Opsi yang tidak memerlukan subkulit dan dibuat untuk bash
(pushd SOME_PATH && run_stuff; popd)
Demo:
$ pwd
/home/abhijit
$ pushd /tmp # directory changed
$ pwd
/tmp
$ popd
$ pwd
/home/abhijit