GNU/Linux >> Linux Esercitazione >  >> Linux

gnome-terminal:come preservare i collegamenti simbolici della directory di lavoro all'apertura di una nuova scheda?

Questo bug viene monitorato su Ubuntu Launchpad e GNOME Bugzilla.

Poiché questo mi infastidisce principalmente con solo poche directory, utilizzo la seguente soluzione alternativa più semplice.

Supponi di avere /home/username/work come collegamento simbolico a /long/path/named/asdf . Quindi fai cd ~/work in gnome-terminal, apri una nuova scheda e trova il terminale che riporta il percorso completo. Per risolvere questo problema, inserisci quanto segue nel tuo .bashrc :

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

Quando gnome-terminal avvia una nuova shell, ottiene la directory corrente con $PWD e se contiene /long/path/named/asdf , sostituisce quella stringa con $HOME/work e cd s alla stringa risultante. Se $PWD non contiene la stringa, equivale a cd $PWD , che non fa nulla.


Sospetto che non ci sia una risposta veramente buona a questo. gnome-terminal trova bash l'attuale directory di lavoro ispezionando /proc/<pid>/cwd , che ha ampliato i collegamenti simbolici (probabilmente per motivi di sicurezza, se non altro). Non conosco un altro modo per un processo di trovare la directory di lavoro di un altro processo.

Per ovviare al problema, ci sono alcuni trucchi bash che potresti provare, ma vedi ATTENZIONE sotto! In .bashrc:

...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...

[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd `cat ~/.bashlocal_saved_dir`
# end of .bashrc

Questo farà due cose. Innanzitutto, ogni volta che bash visualizza il prompt, scriverà prima la sua attuale directory di lavoro nel file .bashlocal_saved_dir nella tua home directory. In secondo luogo, quando bash si avvia in modo interattivo (invece di eseguire uno script), passerà alla directory memorizzata nello stesso file. Ciò significa che quando avvii una nuova bash interattiva, verrà avviata nella stessa directory della bash che ha visualizzato per ultima il suo prompt. Nota che puoi premere Invio per fare in modo che una bash visualizzi nuovamente il suo prompt, rendendolo così l'ultimo. :)

ATTENZIONE :Questo è un hack, e l'ho provato solo fino al punto in cui so che funziona. Pensa alla gomma da masticare e ai pochi soldi. Potrebbe avere effetti sorprendenti e certamente non funzionerà in modo pulito come gnome-terminal l'approccio di. In particolare, se stai eseguendo molte schede contemporaneamente, tutte eseguendo attività in background, potresti benissimo finire nella directory "sbagliata" quando apri una nuova scheda.


Linux
  1. Come impostare i parametri quando Pipe Bash Script su Bash?

  2. Come eseguire il completamento automatico del terminale quando sono presenti diversi file/directory?

  3. Come fare eco a una nuova riga negli script di Bash Shell

  4. Come creare una nuova directory in Linux

  5. Come imposto la directory di lavoro del processo genitore?

Come verificare se esiste un file o una directory in Bash

Come verificare se un file o una directory esiste in Bash

Come stampare la directory di lavoro usando il comando pwd di Linux?

Come creare una nuova finestra sulla directory corrente in Tmux?

In che modo Unix tiene traccia della directory di lavoro di un utente durante la navigazione nel file system?

Come verificare se esiste un file o una directory in Bash Shell