スクリプトの履歴の拡張

スクリプトの履歴の拡張

次の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
!!

コードの最初の行は、履歴拡張が有効になっていることを確認します。 2番目は歴史を拡張することです。 3回目も最初のものと同じです。次に実行され、pwd最後のコマンドを割り当ててlast_command変数を印刷します。

歴史は拡張されません。どうしたの?

答え1

非対話型シェルの場合は、特に次のことを行う必要があります。返品コマンド履歴を有効にする:

set -o history
set -o histexpand

それからあなたの例はうまくいきます。

disabled
enabled
/home/schaller/tmp/502442
last_command="pwd"
pwd

関連情報