He leído esta pregunta y respuesta, pero no se ajusta a mi problema, aunque sea similar.
Estoy escribiendo un script (llamado cpj) que lanzará uno de mis proyectos actuales. Tengo alrededor de 5 de ellos. Cuando escribo
$ cpj blah
Quiero que el directorio de trabajo actual cambie al directorio del proyecto bla (que tengo en $ PROJDIR) y quiero que emacsclient abra el archivo principal para ese proyecto (que tengo en $ MAINFILE).
La pregunta que cité dice que no puede cambiar directamente el entorno del shell que ejecuta el script, pero puede obtener un script y lo hará.
Para probar esto, escribí un script de shell (llamado chcwd) que tiene una línea:
cd $1
Si, desde la línea de comando hago:
$ . chcwd $PROJDIR
mi directorio de trabajo actual cambiará como lo desee. Si, por otro lado, desde mi script cpj, tengo la misma línea:
. chcwd $PROJECT
no cambiará el directorio de trabajo actual del shell. Me doy cuenta de que estoy ejecutando 2 scripts (cpj y luego chcwd), y creando 2 shells, pero no veo forma de hacer lo que quiero. ¿Alguien puede mostrarme cómo lograr mi objetivo?