Ho letto questa domanda e la risposta, ma non si adatta perfettamente al mio problema, anche se è simile.
Sto scrivendo una sceneggiatura (chiamata cpj) che lancerà uno dei miei progetti attuali. Ne ho circa 5. Quando scrivo
$ cpj blah
Voglio che l'attuale directory di lavoro cambi nella directory del progetto blah (che tengo in $ PROJDIR) e voglio che emacsclient apra il file principale per quel progetto (che tengo in $ MAINFILE).
La domanda che ho citato dice che non puoi cambiare direttamente l'ambiente della shell che esegue lo script, ma puoi procurartene uno e lo farà.
Per provare questo ho scritto uno script di shell (chiamato chcwd) che ha una riga:
cd $1
Se, dalla riga di comando, faccio:
$ . chcwd $PROJDIR
la mia directory di lavoro corrente cambierà come desidero. Se, d'altra parte, dal mio script cpj, ho la stessa riga:
. chcwd $PROJECT
non cambierà la directory di lavoro corrente della shell. Mi rendo conto che sto eseguendo 2 script (cpj e poi chcwd), e quindi creando 2 shell, ma non vedo alcun modo per ottenere ciò che voglio. Qualcuno può mostrarmi come raggiungere il mio obiettivo?