J'ai lu cette question et sa réponse, mais cela ne correspond pas à mon problème, même si c'est similaire.
J'écris un script (appelé cpj) qui lancera l'un de mes projets en cours. J'en ai environ 5. Quand je tape
$ cpj blah
Je veux que le répertoire de travail actuel se transforme en répertoire de projet blah (que je tiens dans $ PROJDIR) et je veux qu'emacsclient ouvre le fichier principal de ce projet (que je tiens dans $ MAINFILE).
La question que j'ai citée dit que vous ne pouvez pas changer directement l'environnement du shell exécutant le script, mais vous pouvez source un script et il le fera.
Pour tester cela, j'ai écrit un script shell (appelé chcwd) qui a une ligne:
cd $1
Si, à partir de la ligne de commande, je fais:
$ . chcwd $PROJDIR
mon répertoire de travail actuel changera comme je le souhaite. Si, en revanche, à partir de mon script cpj, j'ai la même ligne:
. chcwd $PROJECT
cela ne changera pas le répertoire de travail actuel du shell. Je me rends compte que j'exécute 2 scripts (cpj puis chcwd), et donc que je crée 2 shells, mais je ne vois aucun moyen de faire ce que je veux. Quelqu'un peut-il me montrer comment atteindre mon objectif?