Ksh
在每次提示之前在目前 shell 中執行命令
我想
jobs
在我的終端標題中顯示目前狀態。在 Bash 中,我可以使用PROMPT_COMMAND
它。Korn Shell (ksh93) 沒有。其他答案建議在內部使用命令替換
$PS1
,這在一般情況下可以正常工作,但不適用於jobs
命令。這裡的問題jobs
是關注目前 shell的作業,但是命令替換(即PS1='...$(jobs)...'
)是在subshell中執行的,因此沒有作業。我知道的唯一機制是
trap '... jobs ...' DEBUG
,但這會執行得太頻繁。您是否知道如何在目前 shell 的上下文中執行命令,在每個提示符下執行一次,或者這在 Korn shell 中是不可能的?!
預設情況下,如果您只是設置
PS1="...."
,那麼引號內的內容會在您設置它時進行評估。但是,如果您將其附在裡面
'
,那麼它會在顯示時進行評估。並且它不會導致$(jobs)
.例如
$ PS1=' > $(jobs) > $ ' $ sleep 1000 & [1] 7541 [1] + Running sleep 1000 & $ sleep 1000 & [2] 7543 [2] + Running sleep 1000 & [1] - Running sleep 1000 & $ kill %1 [1] - Terminated sleep 1000 & [2] + Running sleep 1000 & $ kill %2 [2] + Terminated sleep 1000 & $
(這個測試在 Debian Jessie 上使用 ksh93 完成,但應該適用於所有 ksh93 變體;我沒有任何 ksh88 可供測試。)