setoptต้องการเปิดใช้งานตัวเลือกที่เราสามารถใช้ เช่น:
setopt extended_glob
เราจะตรวจสอบได้อย่างไรว่าตัวเลือกนั้นเปิดใช้งานอยู่หรือไม่?
setoptต้องการเปิดใช้งานตัวเลือกที่เราสามารถใช้ เช่น:
setopt extended_glob
เราจะตรวจสอบได้อย่างไรว่าตัวเลือกนั้นเปิดใช้งานอยู่หรือไม่?
คำตอบ:
ในzshคุณสามารถใช้setoptเพื่อแสดงตัวเลือกที่เปิดใช้งานและunsetoptเพื่อแสดงว่าไม่ได้เปิดใช้งาน:
$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle
$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....
ในคุณสามารถใช้bashshopt -p
set -oสำหรับรายการทั้งหมด
เพียงใช้:
[[ -o extended_glob ]]
ที่ยังทำงานในbashแต่สำหรับตัวเลือกที่กำหนดโดยไม่ได้ตั้งค่าเหล่านั้นด้วยset -o มีเพียงหนึ่งชุดของตัวเลือกซึ่งสามารถตั้งค่าด้วยหรือshoptzshsetoptset -o
เช่นเดียวกับbash(หรือ POSIX เชลล์) คุณสามารถทำset -oหรือset +oดูการตั้งค่าตัวเลือกปัจจุบัน
zsh/parameterโมดูลซึ่งเป็นส่วนหนึ่งของการกระจายเริ่มต้นให้อาเรย์optionsที่บ่งชี้ว่าตัวเลือกที่อยู่ใน
if [[ $options[extended_glob] = on ]]; then …
สำหรับตัวเลือกที่มีนามแฝงตัวอักษรเดียว (ซึ่งไม่ใช่กรณีextended_glob) คุณสามารถตรวจสอบ$-ได้
โปรดทราบว่ามันไม่ค่อยมีประโยชน์ในการทดสอบตัวเลือกที่เปิดใช้งาน หากคุณต้องการเปิดใช้งานหรือปิดการใช้งานตัวเลือกในชิ้นส่วนของรหัสใส่รหัสนั้นในฟังก์ชั่นและตั้งค่าlocal_optionsตัวเลือก คุณสามารถเรียกemulatebuiltin เพื่อรีเซ็ตตัวเลือกให้เป็นสถานะเริ่มต้น
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
setoptพิมพ์เฉพาะตัวเลือกที่ไม่ได้เปิดใช้งานตามค่าเริ่มต้นสำหรับโหมดการจำลองนั้น