web-dev-qa-db-ja.com

'プロセス完了'でbashの単一のターミナルウィンドウを閉じる/強制終了/非表示にする

すべてのユーザーの自動実行に含まれるbashスクリプトを設定する必要があります。

「処理完了」で終了するように端末設定を設定できません。端末を「Kill​​All」できません。

誰かがアプローチを知っていますか? PIDソリューション(親pidではない)が良い方法だと思います。

使用しているOSはMacOSSierraです。

test.sh

#!bin/bash
currentUser=$(whoami)
mkdir -p ~/Desktop/Pdrive
mount_smbfs //server/UserData/$currentUser ~/Desktop/Pdrive


#pid=$$
#kill $pid
#exit 0
#kill -15 $$
#disown
#kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=)
#osascript -e 'tell application "Terminal.app" to quit'
#pkill -f test.sh
exit
2
Sevi S.

これを試して:

出発前に質問されたい場合:

osascript -e 'tell application "Terminal" to close first window' 

尋ねずに去る:

osascript -e 'tell application "Terminal" to close first window' & exit

killallはUnixのバージョンによって動作が異なるため、killallは使用しないでください。

1
Luka

source.とも呼ばれます)を使用して、現在のシェルでスクリプトを実行できます。

. ./test.sh

このように、スクリプトでexitを呼び出すと、シェルも終了します。これにより、ターミナルエミュレータも閉じます。

ただし、これはデフォルト設定のmacOSのターミナルでは機能しませんが、[設定]→[プロファイル]→[シェル]→[シェルが終了したとき]に移動し、[ウィンドウを閉じる]または[シェルが正常に終了した場合は閉じる]を選択できます。

0
dhag