Sobald gnome-terminal bash gestartet hat, ist es aus der Schleife, was die Befehlsausführung betrifft: Es verwaltet nur die Ein- und Ausgabe. Sie benötigen also die Kooperation von bash, um etwas auszuführen, nachdem ~/.bashrces geladen wurde.
Erstens müssen Sie in vielen Fällen keine weiteren Befehle ausführen ~/.bashrc. Zum Beispiel kann das Öffnen eines Terminals in einem bestimmten Verzeichnis einfach mit erfolgen cd /foo/bar && gnome-terminal. Sie können Umgebungsvariablen in ähnlicher Weise festgelegt: VAR=value gnome-terminal. (Wenn Sie ~/.bashrcUmgebungsvariablen überschreiben, machen Sie es falsch: Definitionen von Umgebungsvariablen gehören dazu.~/.profile )
Befehle im Terminal ausführen, aber vorher ~/.bashrckönnen Sie tun
gnome-terminal -x sh -c 'command1; command2; exec bash'
Wenn Sie mehrere Registerkarten verwenden möchten, müssen Sie -estatt verwenden -x. Gnome-terminal spaltet das Argument von -eat Leerzeichen nicht über eine Shell, sondern unbeholfen auf. Sie können jedoch einen Shell-Befehl schreiben, wenn Sie sicherstellen, dass keine Leerzeichen enthalten sind. Zumindest mit Gnome-Terminal 2.26 können Sie jedoch Tabulatoren verwenden ( <TAB>durch ein literales Tabulatorzeichen ersetzen ):
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'
Wenn Sie danach Befehle ausführen ~/.bashrcmüssen, müssen Sie die Befehle ausführen. Fügen Sie beispielsweise den folgenden Code am Ende von ein ~/.bashrc:
eval "$BASH_POST_RC"
Dann, um einen Code nach (wirklich am Ende von) Ihrem BashRC auszuführen:
gnome-terminal -x sh -c BASH_POST_RC=\''command1; command2'\''; exec bash'
oder (weniger schwer zu zitieren)
BASH_POST_RC='command1; command2' gnome-terminal
Obwohl ich dies nicht besonders empfehle, sind Sie möglicherweise an den Techniken interessiert, die unter
So starten Sie ein Terminal mit einem bestimmten Text, der bereits in der Befehlszeile eingegeben wurde. .