Ce bogue est suivi sur Ubuntu Launchpad et GNOME Bugzilla.
Étant donné que cela m'ennuie principalement avec seulement quelques répertoires, j'utilise la solution de contournement plus simple suivante.
Supposons que vous ayez /home/username/work
sous forme de lien symbolique vers /long/path/named/asdf
. Alors vous faites cd ~/work
dans gnome-terminal, ouvrez un nouvel onglet et recherchez le terminal indiquant le chemin complet. Pour résoudre ce problème, mettez simplement ce qui suit dans votre .bashrc
:
cd ${PWD/\/long\/path\/named\/asdf/$HOME\/work}
Lorsque gnome-terminal démarre un nouveau shell, il obtient le répertoire courant avec $PWD, et s'il contient /long/path/named/asdf
, il remplace cette chaîne par $HOME/work
, et cd
s à la chaîne résultante. Si $PWD ne contient pas la chaîne, il équivaut à cd $PWD
, qui ne fait rien.
Je soupçonne qu'il n'y a pas vraiment de bonne réponse à cela. gnome-terminal
trouve bash
répertoire de travail actuel en inspectant /proc/<pid>/cwd
, dont les liens symboliques sont développés (probablement pour des raisons de sécurité, si rien d'autre). Je ne connais pas d'autre moyen pour un processus de trouver le répertoire de travail d'un autre processus.
Pour contourner ce problème, vous pouvez essayer quelques astuces bash, mais consultez l'AVERTISSEMENT dessous! Dans .bashrc :
...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...
[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd `cat ~/.bashlocal_saved_dir`
# end of .bashrc
Cela fera deux choses. Tout d'abord, chaque fois que bash affiche l'invite, il écrira d'abord son répertoire de travail actuel dans le fichier .bashlocal_saved_dir
dans votre répertoire personnel. Deuxièmement, lorsque bash démarre de manière interactive (par opposition à l'exécution d'un script), il passe au répertoire stocké dans ce même fichier. Cela signifie que lorsque vous démarrez un nouveau bash interactif, il démarrera dans le même répertoire que le bash qui a affiché son invite en dernier. Notez que vous pouvez appuyer sur Entrée pour qu'un bash réaffiche son invite, ce qui en fait le dernier. :)
AVERTISSEMENT :Ceci est un hack, et je ne l'ai essayé que jusqu'au point où je sais que cela fonctionne. Pensez au chewing-gum et aux lacets. Cela peut avoir des effets surprenants et ne fonctionnera certainement pas aussi proprement que gnome-terminal
approche. En particulier, si vous exécutez de nombreux onglets à la fois, tous effectuant des tâches en arrière-plan, vous pouvez très bien vous retrouver dans le "mauvais" répertoire lors de l'ouverture d'un nouvel onglet.