Quiero abrir Terminator en un directorio específico, por ejemplo /home/downloads/
, y luego ejecutar un comando.
Hice la primera parte con este "comando personalizado": cd /home/downloads; bash
Terminator ahora comienza en este directorio, pero ¿cómo puedo hacer la segunda parte?
Ahora que terminador se inició en el directorio de descargas, quiero ejecutar cualquier comando que quiero, por ejemplo, ls
o rake
de comandos o utilizar algunos alias como comandos. ¿Cómo puedo hacer esto?
Presiono el botón derecho del mouse en el terminador y elijo Parámetros, luego Diseños, luego agrego texto en la sección Comando personalizado.
Todo esto debe llevarse a cabo automáticamente después del inicio del terminador.
Respuestas:
Ejecutar
cd /home/downloads; exec bash
como el comando personalizado. (La funciónexec
integrada asegura quebash
será un hijo del emulador de terminal; sin él, podría terminar siendo un nieto). Puede ejecutarterminator -e 'cd /home/downloads; exec bash'
en la línea de comandos.No puede usar alias en el comando personalizado porque sus alias están definidos por
~/.bashrc
, pero ese archivo solo se carga por shells interactivos, no por el shell de scripting que se usa aquí como pegamento entre el emulador de terminal y el shell de scripting. Si desea utilizar alias, debe cargarlos explícitamente. Si los mantiene en un archivo separado, sería algo así comoo en la línea de comando
Si sus alias están dentro
~/.bashrc
, úselos. ~/.bashrc
, pero tenga en cuenta que puede haber cosas en su.bashrc
causa que causen errores porque el shell no es interactivo. Si esto sucede, la solución más fácil es dividir sus alias (y funciones y cualquier otra configuración que desee usar en el código de pegamento) en un archivo separado y usar.
para incluirlos.bashrc
.fuente
Tuve el mismo problema para activar entornos virtuales con Terminator .
El truco es hacer todo con el comando sólo "uno":
bash
. Aprovechando su-i
opción (interactiva) y utilizando una costumbre--rcfile
en la quePROMPT_COMMAND
se configura lo que queramos ejecutar. El resultado sería así:Simplemente reemplace
your commands; go here;
con sus comandos reales. Vea esta respuesta para una explicación .fuente
Simplemente agregue el otro comando de la misma manera que agregó el primero. Por ejemplo, para ejecutar
ls
:Puede agregar esto a la opción de "comando" de su perfil:
La razón por la que no obtienes
rake
es que no está en la ruta predeterminada. Para usarlo, debe especificar la ruta. Entonces, primero ejecute este comando en su terminal:Eso devolverá algo así
/foo/bin/rake
. Ese es el camino que necesitas. Tómelo y agréguelo al comando personalizado anterior:Esto no funcionará para los alias. Su shell configura los alias y no estarán disponibles aquí. Una solución alternativa es utilizar scripts en su lugar. Entonces, si tienes un alias como este:
Crea un script, llámalo
foo.sh
y guárdalo/home/youruser/bin
con estos contenidos:Y hazlo ejecutable:
Luego, en la sección "Comando personalizado", use:
fuente
rake
debería hacerlo si usa la ruta completa/path/to/rake
.cd /path/to/rake; rake; bash
hagas/path/to/rake; rake; bash
.Si hace clic derecho en una ventana abierta de Terminator, puede elegir "Preferencias". Elija el "Perfil" y desde allí, la pestaña "Comando". Hay una casilla de verificación titulada "Ejecutar un comando personalizado en lugar de mi shell".
Creo que eso es lo que estás buscando.
fuente
Simplemente no uses '
command =
' para cambiar el directorio. Úselo para su comando real!Al editar
.config/terminator/config
, solo especifiquedirectory = <dir>
' cuando desea que el terminal se cd automáticamente en un directorio dado, ocommand = <cmd>; <your_shell>
' cuando desea ejecutar un comando personalizado, y no simplemente para cambiar el directorioPor ejemplo:
Si solo desea que el terminal ingrese en el CD
<dir>
al inicio, especifique 'directorio' y deje vacío 'comando':Si solo desea ejecutar un comando personalizado, solo especifique el comando:
Si desea que ambos ingresen en DIR y ejecuten el comando:
fuente