gnome-terminal: como preservar links simbólicos do diretório de trabalho ao abrir uma nova aba?

5

Se eu estou usando gnome-terminal em um diretório de trabalho cujo caminho inclui links simbólicos e eu abro uma nova guia, os links simbólicos serão expandidos para seus destinos no diretório de trabalho da nova guia.

Existe alguma maneira de preservar os links simbólicos ao abrir uma nova guia?

    
por Ian Mackinnon 31.08.2010 / 15:08

3 respostas

5

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.

    
por 05.12.2010 / 23:16
5

Este bug está sendo rastreado no Ubuntu Launchpad e GNOME Bugzilla .

Como isso me incomoda com apenas alguns diretórios, uso a seguinte solução mais simples.

Suponha que você tenha /home/username/work como um link simbólico para /long/path/named/asdf . Então você faz cd ~/work no gnome-terminal, abre uma nova aba e encontra o terminal informando o caminho completo. Para corrigir isso, basta colocar o seguinte no seu .bashrc :

cd ${PWD/\/long\/path\/named\/asdf/$HOME\/work}

Quando o gnome-terminal inicia um novo shell, ele obtém o diretório atual com $ PWD e, se ele contiver /long/path/named/asdf , ele substitui essa sequência por $HOME/work e cd s pela sequência resultante. Se $ PWD não contiver a string, é equivalente a cd $PWD , o que não faz nada.

    
por 11.11.2011 / 08:14
-1

Encontrou este problema como não resolvido no gnome-shell 3.14.4.

Uma solução alternativa seria usar o bash SHLVL da variável Shell (que é incrementado em 1 toda vez que o bash é iniciado) em .bashrc, como segue

# bash login shell would be at level 1.
[[ $SHLVL -eq 2 ]] && cd
    
por 05.06.2017 / 12:24