スクリプトを終了すると、シェルは閉じます。

スクリプトを終了すると、シェルは閉じます。

シェルスクリプトを学んでいます。私のプラットフォームはDebian 10クラウドサーバーです。次のスクリプトをテストしています。

#!/bin/bash
echo This script will exit with an exit status of 0.
exit 0

実行するとセッションが終了します!つまり、端末ウィンドウが消えます。

私が理解したexitように、シェルスクリプト内で実行すると、セッション全体が終了するのではなく、スクリプトだけが終了します。たぶんDebian 10はこのパターンから抜け出すことができますか?それでは、Debian 10のシェルスクリプトから値をどのように返しますか?

ベストアンサー1

バッシュのマニュアルページ:

 .      filename [arguments]
 source filename [arguments]

   Read and execute commands from filename in the current shell environment...

ここで、「調達」は非常に一般的な用語です。これは、1行ずつ入力したかのようにスクリプトファイルのコマンドを実行することを意味します。同じbashにとどまりながら、すべての変数と設定を維持します。

「実行」スクリプトには定義が含まれています。どのようにまさに。一般的に通訳者を呼びます。bash script.sh良いperl script.pl。サフィックスは重要ではありません。重要なのは、最初の行 "binfmt": #!...:./scriptまたはscript($PATH にある場合) だけが必要なことです。

. script(購入)

./script(「実行」、+xが必要)

技術的には違います。


地獄のようにはいある意味、「全体」セッションです。 Ctrl-Dも同様の効果があります。制御可能ですが、対話型シェルはスクリプトと同じであるため論理的です。

努力する

]# ps  
  PID TTY          TIME CMD
18768 pts/1    00:00:00 ps
18994 pts/1    00:00:00 bash
]# bash
]# bash
]# ps
  PID TTY          TIME CMD
18780 pts/1    00:00:00 bash
18781 pts/1    00:00:00 bash
18782 pts/1    00:00:00 ps
18994 pts/1    00:00:00 bash
]# exit
exit
]# exit
exit
]# ps
  PID TTY          TIME CMD
18784 pts/1    00:00:00 ps
18994 pts/1    00:00:00 bash
]# 

...あるシェルを別のシェルの上に重ねて終了する方法を学びます。

それはすべてプロセスとタスクに関するものです。

おすすめ記事