Bash
腳本中的歷史擴展
我有以下 Bash 腳本
case $- in (*H*) echo enabled ;; (*) echo disabled ;; esac set -H case $- in (*H*) echo enabled ;; (*) echo disabled ;; esac pwd last_command="!!" echo $last_command
哪個列印
disabled enabled /home/user !!
第一行程式碼檢查是否啟用了歷史擴展。第二個啟用歷史擴展。第三個和第一個一樣。然後它執行
pwd
並最終將最後一個命令分配給last_command
並列印該變數。歷史沒有擴大。到底是怎麼回事?
對於非互動式 shell,您還必須專門啟用命令歷史記錄:
set -o history set -o histexpand
然後您的範例將起作用:
disabled enabled /home/schaller/tmp/502442 last_command="pwd" pwd