linux - multi - Gnome-Terminal, ¿cómo empezar en un directorio diferente?
multi terminal linux (10)
Opción de directorio
Existe la opción --working-directory
para especificar el directorio de inicio del terminal (sin formulario de opción corta).
El enfoque básico para abrir la terminal en /some/dir
es
gnome-terminal --working-directory=/some/dir
pero hay una trampa ...
Mala trampa
Suponiendo que queremos iniciar el terminal en el directorio ~/dir
.
Esto no funciona:
gnome-terminal --working-directory=~/dir
El comando se ve perfectamente bien de acuerdo con la sintaxis de la opción, pero el terminal se inicia en el directorio de inicio.
Esto se debe a que no expande la tilde ( ~
), por razones confusas, ver más abajo.
Thesse hacer el trabajo:
gnome-terminal --working-directory=/home/auser/dir
gnome-terminal --working-directory=$HOME/dir
gnome-terminal --working-directory ~/dir
Expansión de tilde
Tenga en cuenta que no hay =
en la última variante. Debido a esto, el ~
encuentra al comienzo de una palabra de shell, y por lo tanto está acompañado por la expansión de tilde.
El problema es que ~
no se expande en todas partes, sino solo en ciertos lugares. Uno de ellos está en asignaciones de variables, como directory=~/dir
. Eso está bien, ~
se expande a $HOME
, pero --working-directory=~/dir
no expande ~
, porque no es una asignación de variable, solo se ve muy similar.
Cada vez que inicio mi consola gnome-terminal
en Ubuntu, se inicia en el directorio de inicio. ¿Cómo puedo hacer que comience en un directorio diferente, digamos ~/myfolder
? Intenté escribir cd ~/myfolder
en ~/.profile
pero no pasa nada.
Agrega lo siguiente a tu ~ / .bashrc
cd ~ / myfolder
De hecho, así es como lo apago para todos por defecto.
gconftool-2 --direct /
--config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory/ /
--set -- type=bool /apps/nautilus-open-terminal/desktop_opens_home_dir true
Desde la terminal de GNOME - Comenzando :
También puede especificar un comando que se ejecute automáticamente cuando inicie GNOME Terminal en el perfil.
Estoy impresionado por el comentario de Neil en Mayhew y la respuesta de Volker Siegel . He intentado no solo configurar el directorio predeterminado para gnome-terminal sino también preservar el comportamiento habitual del entorno de escritorio (estoy usando Linux Mint 17.1 Cinnamon , GNOME Terminal 3.6.2 , tal vez también se puede aplicar para otros congresos de Gnome). DEs). Así que déjame poner mis dos centavos.
Agregar
cd ~/myfolder
al final de~/.bashrc
hace el trabajo. Pero como ya se mencionó afectará a cada shell interactivo. Más aún, si abre algún directorio en un administrador de archivos ( Nemo o Nautilus o algo así) y apela al menú contextual desde allí (por ejemplo, haga clic con el botón derecho y luego seleccione Abrir en la Terminal ), se iniciará una nueva instancia de gnome-terminal .~/myfolder
independientemente de la carpeta que se cargó en el administrador de archivos. Incluso si ejecutagnome-terminal --working-directory=/some/other/folder
explícitamente, todavía abrirá~/myfolder
. Parece que el enfoque con.bashrc
es inutilizable.gnome-terminal --working-directory=myfolder
funciona bien pero solo cuando usa una entrada de menú personalizada en su DE (o acceso directo personalizado en el escritorio) que ejecuta el terminal con este parámetro. Si desea ejecutar gnome-terminal desde la línea de comandos o desde el mini-launcher (presione Alt + F2 ), debe escribir el parámetro cada vez. De todos modos este enfoque es más o menos utilizable.
¿Cómo gnome-terminal determina qué carpeta abrir? Cuando no se especifica --working-directory
se abre el directorio de trabajo actual (por ejemplo, $PWD
), de lo contrario se abre explícitamente el directorio especificado.
He encontrado la siguiente solución.
Cree un archivo llamado gnome-terminal
en su carpeta ~/bin
. Actuará como acceso directo pero desde todas partes (menú de inicio, mini-launcher, otra instancia de terminal, etc.) porque ~/bin
ya está en $PATH
(al menos en Linux Mint ...). Hacer este archivo ejecutable. Luego ponga el siguiente contenido en el script:
#!/bin/bash
home_directory=~
if [ "$PWD" == "$home_directory" ]; then
# When ''gnome-terminal'' was ran from either
# - start menu
# - mini-launcher
# ...
# parent directory is set to $HOME.
#
# We respect original command line arguments.
# For example, when terminal is ran from another
# terminal instance and ''--working-directory'' is
# specified explicitly we should left it as it is.
# If there are two ''--working-directory'' switches
# in the command line ''gnome-terminal'' will pick up
# the last one.
#
# Also we use full path to executable here in order
# to prevent recursive calling of ''gnome-terminal'' from
# ''~/bin''.
/usr/bin/gnome-terminal --working-directory=/ "$@"
else
# ''gnome-terminal'' was from another directory.
# We don''t change anything.
/usr/bin/gnome-terminal "$@"
fi
Si ejecuta gnome-terminal desde el menú de inicio, verá que la carpeta actual en el nuevo terminal es /
(puede usar cualquier carpeta, por ejemplo, ~/myfolder
porque nuestro contenedor personalizado es un script Bash, por lo que la expansión de la shell funciona bien) .
Si apela a Open in Terminal en un administrador de archivos, obtendrá el directorio actual en el nuevo terminal.
Si ejecuta gnome-terminal con un --working-directory
explícito (quizás, desde una instancia de terminal existente), se abrirá una nueva instancia de terminal en el directorio que especificó.
Lo hice de esta manera: con el script: abra 3 pestañas en el mismo tamaño de ventana 170x40, cada "pestaña" comienza en un directorio diferente.
gnome-terminal --geometry = 170x40 --working-directory = myfolder1 /
--tab --working-directory = myfolder2 /
--tab --working-directory = myfolder3
Para abrir en mi directorio deseado como usuario root ejecuté:
gnome-terminal --working-directory=/home/my-project/ -x bash -c "sudo su"
Podría usar la extensión nautilus-open-terminal . Esto le permite hacer clic derecho en una carpeta en nautilus y abrir una ventana de terminal con ese directorio como su directorio de trabajo.
También puede ejecutar un terminal de la forma normal, escriba "cd" y arrastre un icono de carpeta desde nautilus a la ventana. Esto pegará la ruta de acceso de la carpeta en la línea de comandos y luego escribirá return para cambiar a ese directorio. Puede hacer lo mismo con los archivos normales para pegar su ruta y ejecutar comandos en ellos.
Si la carpeta tiene una ruta complicada, es decir, no solo ~/myfolder
, puede crear un enlace simbólico a ella en su directorio de inicio para poder acceder a ella rápidamente. También puede configurar la variable de entorno CDPATH
para decirle a bash que busque una lista de directorios cuando escribe cd myfolder
.
si inicia gnome-terminal como "gnome-terminal --working-directory = myfolder" se iniciará con el directorio de trabajo en ~ / myfolder. para que pueda agregar una nueva entrada a su menú para usar ese comando en lugar del otro.