web-dev-qa-db-ja.com

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
4
Underscore

これらのコマンドをスクリプトで実行していると仮定します。

$$実行中 bashプロセスのpidであることに注意してください。スクリプトを実行している場合、そのスクリプトのbashプロセスは現在のインタラクティブシェルの子です。スクリプトで$$を強制終了すると、親シェルではなくスクリプトを強制終了します。

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
3
glenn jackman

与えられた答えのおかげで、この問題の適切な解決策を見つけました。コマンドkill -9 $var(varは$ PPID)で簡単に実行できます。

開始ポストから現在使用しているスクリプトまでのコードを編集しました。すべての入力に対するThx。

0
Underscore