Bash

腳本中的歷史擴展

  • February 23, 2019

我有以下 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

引用自:https://unix.stackexchange.com/questions/502442