あなたが試みているアプローチは、次の理由で機能しません。
端末セッションのシェルは 1 つのプロセスです。通常、シェル スクリプトを実行すると、ターミナル セッション シェルは 2 番目のシェル プロセスを開始し、その下でスクリプトを実行します。したがってexit
、スクリプトの最後で、2番目のシェルに終了するように指示します-スクリプトの最後に到達したため、とにかく実行します。2番目のシェルプロセスから最初のシェルプロセスを強制終了することもできますが($PPID
他の回答のコメントを参照)、これはあまり良い形式ではありません。
スクリプトが期待どおりに動作するようにするには、ターミナル セッション シェルでスクリプト内のコマンドを実行する必要があります。これには、bash の組み込みsource
コマンド - type source /path/to/your/script gedit
、または. /path/to/your/script gedit
略してを使用します。
これを実行する必要がある方法のため、スクリプトを自分に置くことはPATH
役に立ちません-しかし、スクリプトの実行を容易にするためにエイリアス(一連のシェルコマンドに展開される「ショートカット」)を作成できます-追加alias your_alias_name='. /path/to/your/script'
あなたのような行~/.bashrc
。