如何通过 bash 脚本关闭终端

如何通过 bash 脚本关闭终端

我是这个网站和 Linux 的新手。

我正在尝试编写一个简单的脚本,它将以新名称打开一个新终端,并关闭运行脚本的旧终端。

我遇到的问题是进程号在变化。因此,如果我启动进程并输入:echo $$我会看到 10602。进程结束后,如果加载了新终端,进程号将更改为 10594。因此,我实际上是在终止错误的进程。

此刻我使用这个代码:

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

答案1

我假设您正在脚本中运行这些命令。

请记住这$$跑步bash 进程。如果您正在运行脚本,则该脚本的 bash 进程是当前交互式 shell 的子进程。如果您$$在脚本中终止进程,则终止的是脚本,而不是父 shell。

Bash 将父进程的 pid 存储在$PPID变量中,因此你需要

#!/bin/bash
gnome-terminal &   # launch a new terminal
kill $PPID         # kill this script's parent

我假设父 shell 是从终端生成的,并且您没有更改终端在其 shell 退出时关闭的默认行为。

顺便说一下,

echo -n "Type new terminal name > "  # displays messagebox
read text                            # load messagebox input

read -p "Type new terminal name > " text

答案2

我确实根据给出的答案找到了适合此问题的解决方案。只需使用命令kill -9 $var(其中 var 为 $PPID)即可完成。

我确实将我的起始帖子中的代码编辑成了我现在使用的脚本。感谢您的所有意见。

相关内容