Рассмотреть возможность:
gnome-terminal -x sleep 10m --version
gnome-terminal -e 'sleep 10m' --version
В первом примере все после -xиспользуется для выполнения команды. Поэтому GNOME Terminal будет работать sleep 10m --versionкак команда. --versionв этом случае становится частью команды, запускаемой GNOME Terminal.
Во втором случае в -eкачестве команды используется только один строковый аргумент , ничего больше. Так --versionчто на самом деле здесь есть опция для GNOME Terminal.
Первый может быть более полезным, если вы хотите запустить цепочку команд:
gnome-terminal -x bash -c 'command 1; command 2; ...'
Это трудно сделать -e, потому что вся команда должна быть единственной строкой, поэтому вам придется заключать в кавычки всю эту вещь. Это, в свою очередь, означает, что вам нужно быть более осторожным с кавычками и расширением переменных, и такими:
gnome-terminal -e "bash -c 'command 1 $foo; command 2; ...'"
Здесь $fooбудет развернута текущая оболочка.
gnome-terminal -e 'bash -c "command 1 | awk '\''{print $NF}'\''"'
Использование 'внутри командной строки включает в себя раздражающую обработку кавычек.