Я плохо знаком с этим сайтом и с Linux.
Я пытаюсь сделать простой сценарий, что откроет новый терминал с новым именем, и закрывать старый терминал от того, куда сценарий работал.
Проблема, с которой я встречаюсь, состоит в том, что число процесса изменяется. Таким образом, если я запускаю процесс и тип: echo $$
Я вижу 10602. После того, как конец процесса, если новый терминал загружается число процесса, изменяется на 10 594. Таким образом, я на самом деле уничтожаю неправильный процесс..
В данный момент я использую этот код:
echo -n "Type new terminal name > " # displays messagebox
read text # load messagebox input
echo "$text" > /etc/terminalname # write messagebox input to file
gnome-terminal # open terminal with new name
kill -9 $PPID # this will kill the old terminal
exit # exit script
Я предположу, что Вы выполняете те команды в сценарии.
Следует иметь в виду это $$
pid рабочего процесса удара. Если Вы запускаете скрипт, что процесс удара сценария является ребенком Вашей текущей интерактивной оболочки. Если Вы уничтожаете $$
в сценарии Вы уничтожаете сценарий, не родительскую оболочку.
Bash хранит родительский pid в $PPID
переменная, таким образом, Вы хотите
#!/bin/bash
gnome-terminal & # launch a new terminal
kill $PPID # kill this script's parent
Я предполагаю, что родительская оболочка является той, порожденной от терминала, и что Вы не изменили поведение терминала по умолчанию закрытия, когда его оболочка выходит.
Как в стороне, вместо
echo -n "Type new terminal name > " # displays messagebox
read text # load messagebox input
сделать
read -p "Type new terminal name > " text
Я действительно находил подходящее решение для этой проблемы благодаря данным ответам. Это просто могло быть сделано с командой kill -9 $var
(где var является $PPID).
я действительно редактировал код от своего начинать-сообщения до сценария, который я использую теперь. Спасибо за весь Ваш вход.