Какой самый удобный способ запуска эмулятора терминала?

14

Скажем, мне нужно написать скрипт, который запустит терминал и выполнит команду, и мне это нужно для работы на разных системах. Как я могу сделать это безопасным и портативным способом?

Является ли xtermвсегда установлен? Я предполагаю, что любой * nix с графическим интерфейсом должен иметь эмулятор терминала. Как я могу добраться до этого? Системы Debian имеют, x-terminal-emulator но это, по-видимому, даже не работает в Red Hat, не говоря уже о не Linux * nixes.

Тердон
источник
Это может быть выполнимо сexpect
Red Cricket
@RedCricket expect? Как? Попросив пользователя ввести свой терминал?
Тердон
.. Любопытно, зачем вам это нужно? Возможно, мы можем предложить альтернативное решение.
user606723
@ user606723 Основное любопытство, интересно, есть ли такая вещь, как POSIX или opendesktop, определенный по умолчанию эмулятор терминала (похоже, ответ - нет). Пришел как реакция на этот вопрос SU.
Тердон
вам действительно нужно запустить эмулятор терминала, или вам просто нужно получить оболочку. Это совсем другая потребность там.
Ложь Райану

Ответы:

10

Я не думаю, что ты можешь. xtermНе нужно устанавливать везде, и, вероятно, не по умолчанию. Особенно, когда используется среда рабочего стола, которая предоставляет собственный терминал.

Я думаю , вам лучше всего, вероятно , чтобы проверить наличие нескольких различных терминалов (скажем, xdg-terminal, x-terminal-emulator, gnome-terminal, konsole, xterm). И, возможно, работать над добавлением xdg-терминала в стандарты FreeDesktop.org.

Затем вы обнаружите, что разные терминалы имеют разные способы запуска команд, а иногда даже разные версии одного и того же терминала ... например, смотрите Debian Bug # 648271 .

Вы, вероятно, также должны дать администратору / пользователю способ установить пользовательскую команду. Это наверняка понадобится.

derobert
источник
Да, это было вызвано вопросом о SU, и я надеялся, что будет более простой способ, чем набор caseутверждений.
Тердон
1
@terdon Я полагаю, что простым способом было бы перечислить довольно светлый терминал в качестве требования для сценария, а затем просто использовать его.
Дероберт
Как насчет того окна терминала, которое появлялось при запуске xinit? Это не делалось годами, но для загрузки простого X-сервера использовалось пустое xterm(?) Окно, из которого вы могли бы начать сеанс. Не означает ли это, что какой-то эмулятор терминала установлен вместе с X?
Тердон
@terdon это было раньше, но затем люди из xorg разделили X на кучу пакетов. (Этот терминал, вероятно, был xterm). Но быстрая проверка показывает, что я могу удалить xterm из моей системы, если захочу.
Дероберт
@terdon Это xterm, традиционный эмулятор терминала X по умолчанию. Но это не всегда может быть установлено. IIRC установка Ubuntu по умолчанию включает только gnome-терминал, а не xterm (а для Kubuntu это будет konsole и т. Д.).
Жиль "ТАК - перестань быть злым"
3

Да, вам нужно использовать обертку. В i3 WM есть хороший. Объясняется здесь: http://build.i3wm.org/docs/i3-sensible-terminal.html

Просто скопируйте это в функцию оболочки в вашем скрипте: http://code.stapelberg.de/git/i3/tree/i3-sensible-terminal

justbrowsing
источник
Это хорошее начало (+1), но проверяет только ограниченное количество терминалов (и использует, whichчто является плохой идеей )
terdon