Eu li esta pergunta e resposta, mas ela não se encaixa no meu problema, mesmo que seja semelhante.
Estou escrevendo um script (chamado cpj) que lançará um dos meus projetos atuais. Eu tenho cerca de 5 deles. Quando digito
$ cpj blah
Quero que o diretório de trabalho atual mude para o diretório do projeto blah (que eu tenho em $ PROJDIR) e quero que o emacsclient abra o arquivo principal desse projeto (que eu tenho em $ MAINFILE).
A pergunta que citei diz que você não pode alterar diretamente o ambiente do shell que está executando o script, mas é possível originar um script e ele fará isso.
Para testar isso, escrevi um shell script (chamado chcwd) que possui uma linha:
cd $1
Se, na linha de comando, eu faço:
$ . chcwd $PROJDIR
meu diretório de trabalho atual mudará como eu desejar. Se, por outro lado, do meu script cpj, tiver a mesma linha:
. chcwd $PROJECT
não mudará o diretório de trabalho atual do shell. Percebo que estou executando 2 scripts (cpj e depois chcwd) e, portanto, criando 2 shells, mas não vejo como fazer o que quero. Alguém pode me mostrar como realizar meu objetivo?