Bash
Set 和 Shopt - 為什麼是兩個?
set
並且shopt
都是控制各種選項的shell內置程序。我經常忘記哪個選項是由哪個命令設置的,以及哪個選項設置/取消設置(set -o/+o
,shopt -s/-u
)。為什麼有兩個不同的命令看似做同樣的事情(並且有不同的論據)?是否有任何簡單的方法/助記符來記住哪個選項與哪個命令一起使用?
據我所知,
set -o
選項是從其他 Bourne 風格的 shell(主要是 ksh)繼承的選項,而shopt
選項是特定於 bash 的選項。沒有我知道的邏輯。
不同之處在於 bash 使用的更改的環境變數。使用
set
命令設置會導致$SHELLOPTS
. 使用shopt
命令設置會導致$BASHOPTS
.