Bash
打擊角色!特殊歷史命令
我們如何更改 bash 字元!對於其他直接單鍵字元的特殊歷史命令,例如
=
?
這可以使用變數
histchars
來完成:最多三個控制歷史擴展、快速替換和標記化的字元(請參閱歷史互動)。第一個字元是 歷史擴展字元,即表示歷史擴展開始的字元,通常是’
!
’。第二個字元是表示“快速替換”的字元,當被視為一行中的第一個字元時,通常是“^
”。可選的第三個字元是當作為單詞的第一個字元時,指示該行的其餘部分是註釋的字元,通常是’#
’。歷史註釋字元會導致為該行中的剩餘單詞跳過歷史替換。所以:
$ echo foo foo $ histchars='=^' $ =echo echo foo foo $
但是:程式碼中偶爾會
!
出現歷史擴展字元的假設(主要用於設置異常,例如在萬用字元中)。設置它=
會破壞很多東西,比如設置變數:$ a=e aecho foo bash: aecho: command not found $ a'='e bash: a=e: command not found $ a\=e bash: a=e: command not found $ printf -v a e $ echo $a e