Czytając o tym pytaniu: w Zsh jak mogę wyświetlić listę wszystkich zmiennych środowiskowych? , Zastanawiałem się, jak mogę wyświetlić wszystkie zmienne powłoki ?
Czy rozróżnienie między zmiennymi powłoki a zmiennymi środowiskowymi dotyczy również powłok innych niż zsh?
Interesuje mnie przede wszystkim Bash i Zsh, ale wspaniale byłoby wiedzieć, jak to zrobić w innych powłokach głównego nurtu.
declare -p
zrób to samoset -o posix
nie istnieje w Zsh;set
nie wyświetla definicji funkcji.set -o posix
jest błędem składniowym większości powłok.exec
, a zmienne powłoki nie.Istnieje wiele alternatyw:
printenv
środowisko
eksport
zestaw
przydaje się również do uzyskiwania zmiennych powłoki.
Jeśli potrzebujesz dodatkowych informacji (liczba całkowita, wyeksportowana), powinieneś użyć
skład
Zaletą eksportu jest to, że jego dane wyjściowe można natychmiast wczytać z powrotem do powłoki.
Wreszcie jest
compgen -v
który pokazuje wszystkie zmienne, powłokę i środowisko, bez ich wartości lub dodatkowych informacji. Musisz znaleźć echo $ VARIABLE_NAME, aby znaleźć wartość zmiennej. Ale przynajmniej lista jest kompletna. Należy do bash , nie zsh .
źródło
export
nie ma żadnej przewagiset
, przynajmniej jeśli chodzi o cytowanie o ponownym wejściu do powłoki. Aprintenv
ienv
nie są w ogóle o zmiennych powłoki, choć to robić często pokrywają się ze zmiennych środowiskowych.Za pomocą
zsh
można użyćtypeset
, który daje więcej informacji niżset
np. Typ zmiennych. Nadal możesz filtrować dane wyjściowe za pomocągrep
lubsed
, w zależności od tego, czego chcesz. Zmienne środowiskowe są oznaczone jakexported
na wyjściu.źródło