GNU/Linux >> Tutoriales Linux >  >> Linux

gnome-terminal:¿cómo conservar los enlaces simbólicos del directorio de trabajo al abrir una nueva pestaña?

Este error se está rastreando en Ubuntu Launchpad y GNOME Bugzilla.

Dado que esto me molesta principalmente con solo unos pocos directorios, utilizo la siguiente solución más simple.

Supongamos que tiene /home/username/work como enlace simbólico a /long/path/named/asdf . Así que haces cd ~/work en gnome-terminal, abra una nueva pestaña y busque el terminal que informa la ruta completa. Para arreglar esto, simplemente ponga lo siguiente en su .bashrc :

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

Cuando gnome-terminal inicia un nuevo shell, obtiene el directorio actual con $PWD, y si contiene /long/path/named/asdf , reemplaza esa cadena con $HOME/work y cd s a la cadena resultante. Si $PWD no contiene la cadena, es equivalente a cd $PWD , que no hace nada.


Sospecho que no hay una respuesta realmente buena para esto. gnome-terminal encuentra bash directorio de trabajo actual de inspeccionando /proc/<pid>/cwd , que tiene los enlaces simbólicos expandidos (probablemente por razones de seguridad, al menos). No conozco otra forma de que un proceso encuentre el directorio de trabajo de otro proceso.

Como solución alternativa, hay algunos trucos de bash que puedes probar, pero mira la ADVERTENCIA ¡abajo! En .bashrc:

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

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

Esto hará dos cosas. Primero, cada vez que bash muestre el indicador, primero escribirá su directorio de trabajo actual en el archivo .bashlocal_saved_dir en su directorio de inicio. En segundo lugar, cuando bash se inicia de forma interactiva (en lugar de ejecutar un script), cambiará al directorio almacenado en ese mismo archivo. Esto significa que cuando inicie un nuevo bash interactivo, comenzará en el mismo directorio que el bash que mostró su mensaje por última vez. Tenga en cuenta que puede presionar Enter para hacer que un bash vuelva a mostrar su aviso, convirtiéndolo así en el último. :)

ADVERTENCIA :Esto es un truco, y solo lo he probado hasta el punto de que sé que funciona. Piensa en goma de mascar y cordones de zapatos. Puede tener efectos sorprendentes y ciertamente no funcionará tan limpiamente como gnome-terminal enfoque de . En particular, si está ejecutando muchas pestañas a la vez, todas haciendo tareas en segundo plano, es muy posible que termine en el directorio "equivocado" al abrir una nueva pestaña.


Linux
  1. ¿Cómo crear una nueva ventana en el directorio actual en Tmux?

  2. ¿Cómo realiza Unix un seguimiento del directorio de trabajo de un usuario al navegar por el sistema de archivos?

  3. ¿Cómo hacer que la terminal se complete automáticamente cuando hay varios archivos/directorio?

  4. Cómo crear un nuevo directorio en Linux

  5. ¿Cómo configuro el directorio de trabajo del proceso principal?

Cómo verificar si existe un archivo o directorio en Bash

Cómo verificar si existe un archivo o directorio en Bash

¿Cómo imprimir el directorio de trabajo usando el comando pwd de Linux?

Cómo verificar si existe un archivo o directorio en Bash Shell

¿Cómo ejecutar un script bash a través de una ruta absoluta?

¿Cómo desvincular todos los enlaces simbólicos del directorio?