我最近購買了一台裝有 OS X Lion 的新 Mac,我正在根據自己的需求進行調整。
我試圖使用其首選項在終端上配置自動關閉(就像我對 Tiger 和 Snow Leopard 所做的那樣),但它不起作用。我設定了“如果外殼完全退出則關閉”,但是當我輸入 時exit
,視窗會關閉,但 Terminal.app 仍然打開。它的選單是可見的,透過alt+tab我可以看到它正在運行。
有什麼建議麼?
答案1
此選項從未關閉過終端應用程式。
請注意,其他選項的標題為關上窗戶和不要關閉窗戶(強調我的),明確此設定僅指關閉窗戶,不是全部應用。
您可以為您的 shell 定義以下內容,例如在~/.bash_profile
for中bash
:
function exit {
osascript -e 'tell application "Terminal" to quit'
}
然後新增osascript
到退出前不需要確認的應用程式清單(在「首選項」>「設定」>「Shell」中)。鍵入exit
退出終端,除非有其他標籤正在執行阻止程式。
exit
當然,您可以給它一個不同的名稱來與常規的分開。我喜歡quit
這個。
答案2
要讓終端機在關閉最後一個終端機/shell 後退出,您可以讓 shell 在退出時執行 AppleScript:
# Quit Terminal when this shell exists if there are no other terminals open.
if [ "$TERM_PROGRAM" == "Apple_Terminal" ]; then
quit_terminal_when_no_terminals_remain() {
osascript -e 'tell application "Terminal" to if running and (count every tab of every window whose tty is not "'"$(tty)"'") is 0 then quit'
}
trap quit_terminal_when_no_terminals_remain EXIT
fi
Apple_Terminal 的測試可確保此程式碼僅在終端內執行時生效。
由於這是異步運行的,因此腳本可能在包含它的終端關閉之前或之後運行(儘管它通常在之後運行),並且如果由於用戶退出終端而關閉該終端,則腳本運行時終端可能不再運行,因此:
- 首先它檢查終端是否仍在運作。如果沒有,則什麼都不做。
- 只有當沒有打開任何終端機或只有當前 tty 的終端機時,它才會退出。它檢查除了當前 shell 連接到的 tty 設備“$(tty)”之外是否還有任何選項卡。
請注意,如果您呼叫任何其他捕獲 EXIT 的 shell 程式碼,這些程式碼將相互幹擾。解決方案是建立另一個函數來呼叫其他函數,並「捕獲 the_other_function EXIT」以在 shell 退出時呼叫所有內容。
順便說一句,與往常一樣,如果此功能對您很重要,請向 Apple 提交增強請求。請求首選項設定以使終端機在沒有更多視窗開啟時退出:https://bugreport.apple.com/
答案3
作為一個巧妙的解決方案,嘗試-
open -a /Applications/Utilities/Terminal.app *.py 或 open -b com.apple.terminal *.py
對於啟動的shell,您可以進入“首選項”>“Shell”>將其設定為如果沒有錯誤就退出。
當我需要幾乎同時運行許多腳本/命令時,我經常使用它。
就是這樣。
答案4
一個更簡單、更優雅的解決方案是在 .bash_profile 中設定一個別名,如下指令:
alias quit="killall Terminal"
很漂亮吧?