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?
fonte
Eu tenho um script semelhante escrito para meu uso pessoal. Existe um truque muito fácil de conseguir alterar o diretório de trabalho dentro de um script. Primeiro, basta escrever seu script, in.ex .:
Agora vamos assumir que o script é chamado 'cdto'. Para fazê-lo funcionar, você deve obtê-lo no shell atual, o que pode ser alcançado por 'source' ou '.' comando (ambos são iguais). Ex .:
Agora, para torná-lo mais conveniente:
Copie o script 'cdto' para um diretório 'bin' da sua conta (em. Ex. / Home / johnsmith / bin - crie-o se não existir). Verifique sua variável PATH para garantir que o diretório 'bin' esteja incluído:
eco $ PATH
Caso contrário, edite seu arquivo .profile e adicione:
Adicione um alias ao seu arquivo .bashrc ou .bash_aliases:
alias cdto = '. cdto '
E está feito. Após o próximo login ou quando você abre um novo terminal, você pode apenas usar in.ex .:
Desfrutar :-)
Sebastian Piech
fonte
Um truque simples para fazer isso:
Agora, o diretório de trabalho é $ PROJECT.
fonte