Я использую Linux Mint 19.03
Прежде всего, могу вас заверить, что я прочитал большинство возможных вопросов, дубликатом которых, как вы могли подумать, является этот мой вопрос.
Теперь мне нужно ввести что-то в окне терминала, чтобы открыть новое окно терминала и выполнить команды.
Что-то вроде этого:
[the part I am asking of] "echo $PATH; read"
Этот код должен открыть новый терминал, переменная $PATH должна отображаться, а чтение должно использоваться только для остановки терминала.
Я пробовал x-terminal-emulator -e
или x-terminal-emulator -c
или -x
, но мне так и не удалось сделать это правильно. Все ответы на этом SE на похожие вопросы являются старыми ответами и использовали -e или -x, но там говорится, что эти опции устарели.
Итак, каков наиболее правильный способ достижения этой цели?
Спасибо.
решение1
x-terminal-emulator
не запускает оболочку саму по себе. Это листает только исполняемые файлы, которые нужно запустить с опцией -e
.
Пока echo
доступен как исполняемый файл ( /bin/echo
), read
как bash
внутренняя команда завершится ошибкой без bash
. Поэтому вывод в новом окне выполняется быстрее, чем требуется для открытия окна, а при read
ошибке окно закрывается до того, как вы его увидите.
Это сработает:
x-terminal-emulator -e "bash -c 'echo $PATH; read'"
Теперь x-terminal-emulator
запускается bash
оболочка, которая затем выполнит echo $PATH; read
. Поскольку echo
и особенно read
now доступны как bash
внутренние команды, read
команда не даст сбой и будет ждать ввода, что держит окно открытым до тех пор, пока не будет нажата клавиша.