Bash

Set 和 Shopt - 為什麼是兩個?

  • November 11, 2021

set並且shopt都是控制各種選項的shell內置程序。我經常忘記哪個選項是由哪個命令設置的,以及哪個選項設置/取消設置(set -o/+o, shopt -s/-u)。為什麼有兩個不同的命令看似做同樣的事情(並且有不同的論據)?是否有任何簡單的方法/助記符來記住哪個選項與哪個命令一起使用?

據我所知,set -o選項是從其他 Bourne 風格的 shell(主要是 ksh)繼承的選項,而shopt選項是特定於 bash 的選項。沒有我知道的邏輯。

不同之處在於 bash 使用的更改的環境變數。使用set命令設置會導致$SHELLOPTS. 使用shopt命令設置會導致$BASHOPTS.

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