Você não pode alterar o diretório atual de um shell de outro processo. Somente o processo em si pode alterar seu próprio diretório atual. Isso também vale para algumas outras características, como variáveis de ambiente e descritores de arquivos.
Na verdade, é possível afetar o diretório atual de outro processo fazendo com que ele execute uma chamada de sistema chdir
por meio do ptrace
chamada de sistema, que é o que permite que os depuradores funcionem. No entanto, se o processo mantiver algumas estruturas de dados internas que precisam ser consistentes com o diretório atual real, o programa provavelmente falhará. Para um shell, essa abordagem não tem chance de funcionar.
Você precisa organizar seu código para ser executado pelo próprio shell. O modo normal de proceder seria torná-lo uma função de shell e armazená-lo no seu ~/.bashrc
. Se isso não for possível, por exemplo, porque é um código que você deseja distribuir, escreva um arquivo de origem do shell que contenha a definição da função e diga às pessoas para que o shell interativo leia o arquivo com o .
command .