Lỗi cụ thể của bạn là do không sử dụng --execute
tùy chọn đúng cách. Nếu bạn xem đoạn trích từ trang man bên dưới, bạn sẽ lưu ý rằng --execute
không có dấu bằng được liệt kê như một phần của cú pháp, vì nó chỉ thực hiện toàn bộ phần còn lại của dòng lệnh. Một ví dụ về sử dụng đúng sẽ là:
gnome-terminal --execute play '/home/cjohnson/Still Alive.mp3'
LƯU Ý QUAN TRỌNG: Dù sao,
sử dụng cd
là một chút của một trường hợp đặc biệt. cd
không giống như hầu hết các lệnh khác, nó không khởi chạy nhị phân / thực thi của chính nó. Nó được giải thích trực tiếp bởi bash
(hoặc bất kỳ shell nào bạn đang sử dụng). Do đó, cố gắng gọi cd
không đồng ý với các cờ --execute
và -x
(dường như muốn trực tiếp sinh ra một quá trình con). Vấn đề tương tự sẽ xảy ra (tôi đã kiểm tra) với các lệnh khác được xử lý trực tiếp bằng cách bash
thích home
. Ngay cả khi được sử dụng đúng cách, không có dấu bằng, nó vẫn sẽ dẫn đến lỗi: "Không tìm thấy tệp hoặc thư mục." Do đó, sử dụng --working-directory=[DIRECTORY]
tùy chọn là đặt cược tốt nhất của bạn để làm những gì bạn muốn làm.
LƯU Ý QUAN TRỌNG KHÁC:
Ngay cả khi điều này không đúng, bạn vẫn sẽ gặp rắc rối. Vấn đề nằm ở việc cố gắng sử dụng --execute
tùy chọn khi bạn thực sự có ý nghĩa của --command
tùy chọn. Trong tài liệu trang người đàn ông, nó nói cụ thể
-e, --command = STRING
Thực hiện đối số cho tùy chọn này bên trong thiết bị đầu cuối.
-x, --execute
Thực hiện phần còn lại của dòng lệnh bên trong thiết bị đầu cuối.
(nhấn mạnh của tôi)
Nói cách khác, có lẽ nó sẽ không phân tích nó theo cách bạn nghĩ nó nên. Việc sử dụng --execute
ngăn bạn vượt qua bất kỳ tùy chọn nào khác để gnome-terminal
.
Một đoạn trích từ một trong các tập lệnh của riêng tôi nơi tôi chạy nhiều lệnh trong các tab riêng biệt (tên đã thay đổi cho quyền riêng tư / bảo mật của tôi):
gnome-terminal --tab --command="ssh cjohnson@GLaDOS" --tab --command="ssh drattman@GLaDOS"
(Ngẫu nhiên, cố gắng sử dụng --command
cờ có cd
hoặc home
cũng sẽ dẫn đến lỗi "Không có tệp hoặc thư mục" quen thuộc.)
Tôi hy vọng điều này không quá dài. Tôi chỉ đang cố gắng để được kỹ lưỡng.