Eu suspeito que não há uma resposta realmente boa para isso. gnome-terminal
encontra o diretório de trabalho atual de bash
inspecionando /proc/<pid>/cwd
, que tem os links simbólicos expandidos (provavelmente por razões de segurança, se nada mais). Eu não sei de outra maneira para um processo encontrar o diretório de trabalho de outro processo.
Como solução alternativa, existem alguns truques bash que você pode tentar, mas veja o AVISO abaixo! Em .bashrc:
...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...
[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd 'cat ~/.bashlocal_saved_dir'
# end of .bashrc
Isso fará duas coisas. Primeiro, sempre que o bash exibir o prompt, ele primeiro gravará seu diretório de trabalho atual no arquivo .bashlocal_saved_dir
em seu diretório inicial. Segundo, quando o bash começa interativamente (ao contrário de executar um script), ele será alterado para o diretório armazenado no mesmo arquivo. Isso significa que quando você inicia um novo bash interativo, ele será iniciado no mesmo diretório que o bash que exibiu o prompt. Note que você pode pressionar Enter para fazer com que um bash reexibere o prompt, tornando-o o último. :)
AVISO : Isso é um hack, e eu apenas tentei até o ponto que eu sei que funciona. Pense chiclete e cadarços. Pode ter efeitos surpreendentes e certamente não funcionará tão bem quanto a abordagem de gnome-terminal
. Em particular, se você estiver executando muitas abas ao mesmo tempo, todas executando tarefas em segundo plano, pode muito bem acabar no diretório "errado" ao abrir uma nova aba.