set és shopt héj beépítettek, amelyek különböző lehetőségek. Gyakran elfelejtem, hogy melyik beállítást melyik parancs állítja be, és melyik állítja be / állítja be (set -o/+o, shopt -s/-u). Miért van két különböző parancs, amelyek látszólag ugyanazt csinálják (és más érvekkel rendelkeznek)? Van-e valamilyen egyszerű módja annak, hogy emlékezzen arra, hogy melyik opció melyik parancshoz tartozik? 
Megjegyzések
Válasz
 Ha jól tudom, a  opciók azok, amelyeket más Bourne-stílusú héjaktól (többnyire ksh-től) örököltek, és a shopt opciók azok, amelyek specifikusak a bash-ra. Nincs olyan logika, amiről tudnék. 
Megjegyzések
-  Minden olyan dokumentum, amely a shopt-et mutatja, öröklődik?
-  Nos, vannak set -olehetőségek, mint példáulposix/physical/interactive-comments, amelyek nincsenekkshésshoptkagyló, beleértve a következőt:ksh, példáullogin_shell/nullglob. Mint mondod, ott ' nincs logika. Valószínűleg az volt az ötlet az elején (hogy a SHELLOPTS lesz a szokásos, és a BASHOPTS a bash specifikus), de ez elveszett az út során, és most ez csak bosszantó és felhasználói felület-fiaskó lesz.
Válasz
 A különbség a megváltozott környezeti változóban van A bash által használt. A set paranccsal történő beállítással . A shopt paranccsal történő beállítás a $BASHOPTS eredményt eredményezi. 
Megjegyzések
-  Ugh! Ez még zavaróbb. Az agyam a (z) shopt-t a $ SH ELL OPT S-hez akarja társítani, nem pedig a $ BA SHOPT S-hez .
Válasz
- 
setis POSIX 7: set – opciók és pozícióparaméterek beállítása vagy törlése | pubs.opengroup.org
- 
shoptnem: Shell & Segédprogramok: Részletes Toc | pubs.opengroup.org
Valószínűleg a @Gilles által említett előzményekhez kapcsolódik.
Válasz
 Könnyű, de elveszett a történelemben. A  set  parancsot eredetileg az eredeti unix héjak parancssori környezetének módosítására használták /bin/sh. Aztán ahogy a különféle Unix verziók fejlődtek, és új shell ízeket adtak hozzá, az emberek rájöttek, hogy több (környezeti) dolgon változtatni kell ahhoz, hogy kompatibilisek legyenek a shell scriptek. Abban az időben Bash nagyon népszerű lett, és a további  sh  ell  opt  ionokra volt szükség, bevezetve a shopt -t. 
 Ezeket a  compat  ibility kísérletek a shopt parancsban. 
$ shopt autocd off cdable_vars off cdspell off checkhash off checkjobs off checkwinsize off cmdhist on compat31 off compat32 off compat40 off compat41 off compat42 off complete_fullquote on direxpand off dirspell off dotglob off execfail off expand_aliases on extdebug off extglob off extquote on failglob off force_fignore on globstar off globasciiranges off gnu_errfmt off histappend on histreedit off histverify off hostcomplete on huponexit off interactive_comments on lastpipe off lithist off login_shell on mailwarn off no_empty_cmd_completion off nocaseglob on nocasematch off nullglob off progcomp on promptvars on restricted_shell off shift_verbose off sourcepath on xpg_echo off  De nem a set parancsban. 
$ set -o allexport off braceexpand on emacs on errexit off errtrace off functrace off hashall on histexpand on history on igncr off ignoreeof off interactive-comments on keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off pipefail off posix off privileged off verbose off vi off xtrace off megjegyzések
-  setaz opciók beállításának módja nem volt ' t az eredeti Unix héjakban a Bourne héj vezette be a 70-es évek végén. Magát azset -o name-et később a Korn shell adta hozzá, de megadta, de opcionális a POSIX-ban, amelyet továbbra sem támogat a " modern " a Bourne-shell változatai, például a Solaris 10/bin/sh.
Válasz
A “Linux Shell Scripting with Bash” könyvből, 63. oldal:
Történelmileg a
setparancsot használták az opciók be- és kikapcsolására. Az opciók számának növekedésével asethasználat nehezebbé vált, mert az opciókat egybetűs kódok képviselik. Ennek eredményeként a Bash megadja ashopt( shell opció ) parancsot az opciók betű helyett név szerinti be- és kikapcsolásához. Bizonyos opciókat csak levélben állíthat be. Mások csak ashoptparanccsal érhetők el. Ez egy adott opció megtalálását és beállítását zavaros feladattá teszi.
Válasz
Úgy tűnik, hogy a “beállított” opciókat az alhéjak öröklik a shopstok pedig nem.
Megjegyzések
- Szép fogás. Kíváncsi vagyok, hogy ez szándékos választás, vagy mellékhatás.
-  @ user29778 Legalább a  bash 4.1.5 (1)  alatt a  nem öröklik az alhéjak. Mind a set, mind ashoptopciókat nem öröklik meg az alhéjak.
-  Tudna mutatni a setésshoptöröklési jellemzőit leíró dokumentációra?
-  Mindkettő set -oésshoptopciókat az alhéjak öröklik ((...),$(...), csővezeték alkatrészei). Az, hogy másbashinvokációk öröklik-e, attól függ, hogySHELLOPTSvagyBASHOPTSvagy sem.
Válasz
 set a bourne shell (sh) és a POSIX szabvány része, az shopt azonban nem, és a bourne-again shell (bash) specifikus: 
0 sjas@ssg 14:31:45 ~ set | grep -e SHELLOPTS -e BASHOPTS BASHOPTS=checkwinsize:cmdhist:complete_fullquote:dotglob:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor 0 sjas@ssg 14:31:51 ~ shopt | column -t | grep -v off checkwinsize on cmdhist on complete_fullquote on dotglob on expand_aliases on extglob on extquote on force_fignore on histappend on interactive_comments on progcomp on promptvars on sourcepath on 0 sjas@ssg 14:31:57 ~ set -o | column -t | grep -v off braceexpand on emacs on hashall on histexpand on history on interactive-comments on monitor on 0 sjas@ssg 14:37:41 ~ sh $ set -o Current option settings errexit off noglob off ignoreeof off interactive on monitor on noexec off stdin on xtrace off verbose off vi off emacs off noclobber off allexport off notify off nounset off priv off nolog off debug off $ shopt sh: 3: shopt: not found $ 
help setéshelp shoptannak ellenőrzésére, hogy még szerzőik is úgy gondolják, hogy ugyanazt csinálják.