1. ホーム
  2. linux

[解決済み】bashスクリプトを終了させる方法はあるが、ターミナルを終了させることはできない。

2022-04-06 18:09:11

質問

を使用する場合 exit コマンドを使用すると、スクリプトがターミナル(プロンプト)を終了させます。スクリプトを終了させてもターミナルに残る方法はないでしょうか?

私のスクリプト run.sh は、直接ソースされるか、他のスクリプトからソースされることで実行されることが期待されます。

EDIT より具体的に言うと、2つのスクリプトがあります。 run2.sh として

...
. run.sh
echo "place A"
...

run.sh として

...
exit
...

で実行すると . run2.sh にヒットした場合 exit のコードラインは run.sh ターミナルに停止して、そこに留まるようにしたいのです。しかし exit ターミナル全体が閉じてしまいます。

PS: 私は return しかし echo コードラインはまだ実行されます...。

解決方法は?

問題点は、スクリプトを実行するのではなく、ソースとして使用していることです。ファイルをソースすると、その内容はサブシェルが生成されるのではなく、現在のシェルで実行されます。そのため、終了を含むすべてが現在のシェルに影響を及ぼします。

を使う代わりに exit を使用する必要があります。 return .