Saya sudah membaca ini pertanyaan dan jawaban, tetapi tidak berhenti pas masalah saya, bahkan tho itu serupa.
Saya sedang menulis skrip (disebut cpj) yang akan meluncurkan salah satu proyek saya saat ini. Saya memiliki sekitar 5 dari mereka. Saat saya mengetik
$ cpj blah
Saya ingin direktori kerja saat ini berubah ke direktori proyek bla (yang saya simpan dalam $ PROJDIR) dan saya ingin emacsclient untuk membuka file utama untuk proyek itu (yang saya pegang dalam $ MAINFILE).
Pertanyaan yang saya kutip mengatakan bahwa Anda tidak dapat secara langsung mengubah lingkungan shell yang menjalankan skrip, tetapi Anda dapat sumber skrip dan itu akan melakukannya.
Untuk menguji ini saya menulis skrip shell (disebut chcwd) yang memiliki satu baris:
cd $1
Jika, dari baris perintah saya lakukan:
$ . chcwd $PROJDIR
direktori kerja saya saat ini akan berubah sesuai keinginan saya. Sebaliknya, jika dari skrip cpj saya, saya memiliki baris yang sama:
. chcwd $PROJECT
itu tidak akan mengubah direktori kerja shell saat ini. Saya menyadari bahwa saya menjalankan 2 skrip (cpj dan kemudian chcwd), dan dengan demikian membuat 2 shell, tapi saya tidak melihat cara untuk menyelesaikan apa yang saya inginkan. Adakah yang bisa menunjukkan kepada saya bagaimana mencapai tujuan saya?