Nie ma opcji, aby uzyskać wartość domyślną dla niezdefiniowanej zmiennej z wyjątkiem analizy dokumentacji lub kodu źródłowego.
HISTSIZE
i SAVEHIST
nie są ustawieniami, są to zmienne specjalne. Istnieje sposób na wylistowanie wszystkich zmiennych, ale nie wiem, jak wymienić te, które są specjalne i są używane jako ustawienia.
Aby wyświetlić listę parametrów zaimplementowanych jako zmienne, dostępny jest moduł zsh/parameter
(012). Ma asocjacyjną tablicę $parameters
, gdzie klucze są nazwami zmiennych, a wartości są opisami typów zmiennych. Zarówno HISTSIZE
, jak i SAVEHIST
pojawiają się tam jako integer-special
. HISTCHARS
pojawia się tam jako scalar-special
. Zauważ jednak, że RANDOM
pojawia się tutaj jako HISTSIZE
: integer-special
, więc nie możesz tego użyć, aby uzyskać specjalne zmienne używane jako opcje. Ale zawsze możesz skorzystać z sekcji PARAMETERS USED BY THE SHELL
z man zshparam
.
Nie znam żadnej opcji, która umożliwi określenie domyślnych wartości tych parametrów, z wyjątkiem analizy dokumentacji lub kodu źródłowego.
# setopt | grep hist
nobanghist
extendedhistory
histfcntllock
histignorealldups
histignorespace
histnostore
histreduceblanks
histsavenodups
histverify
incappendhistory
Jeśli chcesz zobaczyć inne niż domyślne ustawienia:
Jeśli żadne argumenty są dostarczone, nazwy wszystkich aktualnie ustawionych opcji są drukowane. Formularz jest wybierany tak, aby zminimalizować różnice od domyślnych opcji dla bieżącej emulacji (domyślna emulacja jest natywnym zsh, pokazanym jak w zshoptions (1)). Opcje domyślnie włączone dla emulacji są wyświetlane z prefiksem nie tylko wtedy, gdy są wyłączone, podczas gdy inne opcje są wyświetlane bez prefiksu no i tylko wtedy, gdy są włączone. Oprócz opcji zmienionych z domyślnego stanu przez użytkownika, wszystkie opcje aktywowane automatycznie przez powłokę (na przykład SHIN_STDIN lub INTERACTIVE) będą wyświetlane na liście jako . Format jest dodatkowo modyfikowany opcją KSH_OPTION_PRINT, jednak uzasadnienie wyboru opcji z lub bez prefiksu pozostaje takie samo w tym przypadku.
To także poczucie używać:
# unsetopt | grep hist
noappendhistory
cshjunkiehistory
histallowclobber
nohistbeep
histexpiredupsfirst
histfindnodups
histignoredups
histlexwords
histnofunctions
nohistsavebycopy
histsubstpattern
sharehistory
Jeśli żadne argumenty są dostarczane, nazwy wszystkich opcji aktualnie unset są drukowane.
Albo po prostu podążać za pomoc i korzystać
# setopt kshoptionprint
# setopt | grep hist
noappendhistory off
nobanghist on
cshjunkiehistory off
extendedhistory on
histallowclobber off
nohistbeep off
histexpiredupsfirst off
histfcntllock on
histfindnodups off
histignorealldups on
histignoredups off
histignorespace on
histlexwords off
histnofunctions off
histnostore on
histreduceblanks on
nohistsavebycopy off
histsavenodups on
histsubstpattern off
histverify on
incappendhistory on
sharehistory off
Należy pamiętać, że wyjście setopt
i unsetopt
meczu gdy opcja kshoptionprint
służy.
Dzięki za @ZyX spróbować, ale to tylko pokazuje ustawienia logicznych. Nie pokazuje HISTSIZE i SAVEHIST, które są ustawieniami całkowitymi. –
@RobBednark Nie są to ustawienia. Są to zmienne specjalne. Istnieje sposób na wyświetlenie * wszystkich * zmiennych, ale nie wiem, jak wymienić tylko te, które są specjalne i są używane jako ustawienia. – ZyX
A niektóre zmienne specjalne (zdefiniowane w modułach C) nie są w pełni dostępne do wyświetlenia (pojawiają się w wynikach 'set', ale bez wartości). – ZyX