Після того, як 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
Хоча я особливо не рекомендую робити це таким чином, вас можуть зацікавити методи, згадані в розділі
Як запустити термінал з певним текстом, який вже вводиться в командному рядку? .