Estou executando zsh
(no MacOS) e acabei de aprender sobre o $fpath
. Como de costume, digitei então env
para conferir participando do meu ambiente mas para minha surpresa não estava lá! No entanto, $FPATH
(e $fpath
) é definido:
% echo $fpath
/usr/local/share/zsh/site-functions /usr/share/zsh/site-functions /usr/share/zsh/5.9/functions
% echo $FPATH
/usr/local/share/zsh/site-functions:/usr/share/zsh/site-functions:/usr/share/zsh/5.9/functions
Aqui estão as variáveis impressas por env
:
% env | sort | cut -d '=' -f 1
HOME
HOMEBREW_CELLAR
HOMEBREW_PREFIX
HOMEBREW_REPOSITORY
INFOPATH
LANG
LC_CTYPE
LOGNAME
MANPATH
OLDPWD
PATH
PWD
SHELL
SHLVL
SSH_AUTH_SOCK
TERM
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
TMPDIR
USER
XPC_FLAGS
XPC_SERVICE_NAME
_
__CFBundleIdentifier
Sempre confiei no env
controle de minhas variáveis de ambiente (no Bash), mas aparentemente essa não é a melhor opção (pelo menos não mais)...
Devo usar um comando diferente? Ou como listo todas as variáveis de ambiente acessíveis ao meu usuário/sessão atual?
Variáveis utilizadas pelo shell , como as que você trata aqui, or
PROMPT
, orHISTFILE
, orIFS
, não precisam ser variáveis de ambiente, ou seja, nunca precisam ser exportadas para o ambiente comexport
.Uma variável exportada ficará visível para utilitários externos executados a partir do shell, como o
env
utilitário, enquanto as variáveis que não forem exportadas não serão visíveis para esses utilitários.As variáveis que o shell utiliza não precisam ser exportadas para o ambiente, pois o shell já tem acesso aos seus valores. Além disso, não será necessário exportá-los para que empresas externas tenham acesso aos seus valores, pois apenas poluiria o ambiente para esses processos e, em certos casos raros, poderia causar interferência.
Se quiser ver todas as variáveis do shell , você pode usar o utilitário integrado
set
sem argumentos.