Una volta che gnome-terminal ha iniziato bash, è fuori dal ciclo per quanto riguarda l'esecuzione del comando: gestisce solo l'input e l'output. Quindi avrai bisogno della collaborazione di bash per eseguire qualcosa dopo che ~/.bashrc
è stato caricato.
Innanzitutto, in molti casi, non è necessario eseguire i comandi dopo ~/.bashrc
. Ad esempio, è possibile semplicemente aprire un terminale in una directory specifica cd /foo/bar && gnome-terminal
. È possibile impostare le variabili di ambiente in modo simile: VAR=value gnome-terminal
. (Se ~/.bashrc
sovrascrivi le variabili di ambiente, lo stai facendo in modo errato: le definizioni delle variabili di ambiente appartengono~/.profile
)
Per eseguire comandi nel terminale, ma prima ~/.bashrc
puoi farlo
gnome-terminal -x sh -c 'command1; command2; exec bash'
Se si desidera utilizzare più schede, è necessario utilizzare -e
invece di -x
. Gnome-terminal divide inutilmente l'argomento di -e
spazi anziché eseguirlo attraverso una shell. Tuttavia, puoi scrivere un comando shell se ti assicuri di non includere spazi al suo interno. Almeno con gnome-terminal 2.26, puoi usare le schede, però (sostituiscile <TAB>
con un carattere di tabulazione letterale):
gnome-terminal -e 'sh -c command1;command2;exec<TAB>bash'
gnome-terminal --tab -e 'sh -c command1;<TAB>exec<TAB>bash' \
--tab -e 'sh -c command2;<TAB>exec<TAB>bash'
Se si ha bisogno di eseguire comandi dopo ~/.bashrc
, rendere esso eseguire i comandi. Ad esempio, includere il seguente codice alla fine di ~/.bashrc
:
eval "$BASH_POST_RC"
Quindi eseguire un codice dopo (davvero, alla fine di) il tuo bashrc:
gnome-terminal -x sh -c BASH_POST_RC=\''command1; command2'\''; exec bash'
o (meno pesante sulla quotazione)
BASH_POST_RC='command1; command2' gnome-terminal
Anche se non consiglio particolarmente di farlo in questo modo, potresti essere interessato alle tecniche menzionate in
Come avviare un terminale con un determinato testo già inserito nella riga di comando? .