Как только gnome-терминал запустил bash, он вышел из цикла в том, что касается выполнения команды: он только управляет вводом и выводом. Поэтому вам понадобится сотрудничество bash для запуска чего-либо после загрузки ~/.bashrc
.
Во-первых, во многих случаях вам не нужно выполнять команды после ~/.bashrc
. Например, открыть терминал в определенном каталоге можно просто с помощью cd /foo/bar && gnome-terminal
. Вы можете установить переменные окружения аналогичным образом: VAR=value gnome-terminal
. (Если ваш ~/.bashrc
переопределяет переменные окружения, вы делаете это неправильно: определения переменных окружения находятся в ~/.profile
)
Для выполнения команд в терминале, но перед ~/.bashrc
, вы можете сделать
gnome-terminal -x sh -c 'command1; command2; exec bash'
Если вы хотите использовать несколько вкладок, вы должны использовать -e
вместо -x
. Gnome-терминал бесполезно разбивает аргумент -e
на пробелы, а не выполняет его через оболочку. Тем не менее, вы можете написать команду оболочки, если убедитесь, что в нее не включены пробелы. По крайней мере, в gnome-Terminal 2.26 вы можете использовать вкладки (замените <TAB>
буквальным символом табуляции):
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'
Если вам нужно запускать команды после ~/.bashrc
, заставьте его запускать команды. Например, включите следующий код в конец ~/.bashrc
:
eval "$BASH_POST_RC"
Затем, чтобы запустить некоторый код после (действительно, в конце) вашего bashrc:
gnome-terminal -x sh -c BASH_POST_RC=\''command1; command2'\''; exec bash'
или (менее тяжелый по цитированию)
BASH_POST_RC='command1; command2' gnome-terminal
Хотя я не особо рекомендую делать это таким образом, вас могут заинтересовать методы, упомянутые в разделе Как запустить терминал с определенным текстом, уже введенным в командной строке? ,