Khi gnome-terminal đã bắt đầu bash, nó sẽ thoát khỏi vòng lặp khi có liên quan đến việc thực thi lệnh: nó chỉ quản lý đầu vào và đầu ra. Vì vậy, bạn sẽ cần sự hợp tác của bash để chạy một cái gì đó sau khi ~/.bashrc
đã được tải.
Đầu tiên, trong nhiều trường hợp, bạn thực sự không cần phải thực thi các lệnh sau ~/.bashrc
. Ví dụ, mở một thiết bị đầu cuối trong một thư mục cụ thể có thể được thực hiện đơn giản với cd /foo/bar && gnome-terminal
. Bạn có thể đặt các biến môi trường theo cách tương tự : VAR=value gnome-terminal
. (Nếu bạn ~/.bashrc
ghi đè các biến môi trường, bạn đang làm sai: định nghĩa biến môi trường thuộc về~/.profile
)
Để thực thi các lệnh trong terminal, nhưng trước đó ~/.bashrc
, bạn có thể làm
gnome-terminal -x sh -c 'command1; command2; exec bash'
Nếu bạn muốn sử dụng nhiều tab, bạn phải sử dụng -e
thay vì -x
. Gnome-terminal vô tình phân tách đối số -e
tại các khoảng trắng thay vì thực thi nó thông qua shell. Tuy nhiên, bạn có thể viết lệnh shell nếu bạn đảm bảo không bao gồm khoảng trắng trong đó. Ít nhất là với gnome-terminal 2.26, bạn có thể sử dụng các tab, mặc dù (thay thế <TAB>
bằng một ký tự tab theo nghĩa đen):
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'
Nếu bạn cần chạy các lệnh sau ~/.bashrc
, hãy làm cho nó chạy các lệnh. Ví dụ: bao gồm đoạn mã sau ở cuối ~/.bashrc
:
eval "$BASH_POST_RC"
Sau đó, để chạy một số mã sau (thực sự, vào cuối) bashrc của bạn:
gnome-terminal -x sh -c BASH_POST_RC=\''command1; command2'\''; exec bash'
hoặc (ít nặng về trích dẫn)
BASH_POST_RC='command1; command2' gnome-terminal
Mặc dù tôi không đặc biệt khuyên bạn nên làm theo cách này, bạn có thể quan tâm đến các kỹ thuật được đề cập trong
Cách khởi động thiết bị đầu cuối với văn bản nhất định đã được nhập trên dòng lệnh? .