No FreeBSD 12, usando o zsh
shell, notei essa diferença ao olhar $path
(minúsculas) versus $PATH
(maiúsculas).
echo $path
/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin /usr/home/freebsd/bin
echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/home/freebsd/bin
Uma saída é delimitada pelo caractere SPACE, a outra pelo caractere COLON.
➥ Por que a diferença?
Essas duas variáveis são diferentes e separadas? Ou as letras minúsculas/maiúsculas acionam algum tipo de truque ou significado que eu não conheço?
Isso é uma zsh
característica? Ou um recurso do FreeBSD?
Esse é um recurso
zsh
herdado decsh
/tcsh
.A variável de
$path
matriz está vinculada à variável$PATH
escalar (string). Qualquer modificação em um é refletida no outro.Em
zsh
(ao contrário de(t)csh
), você pode vincular outras variáveis ao lado$PATH
detypeset -T
. É convencional, mas não obrigatório, usar um nome em maiúsculas para o escalar separado por dois pontos e o mesmo nome em minúsculas para a matriz. Enquanto dois pontos é o separador padrão, outros separadores podem ser usados (por exemplo, nova linha para vincular uma string de várias linhas a uma matriz ou vírgula para vincular uma linha csv a uma matriz)Nas versões recentes de
zsh
,typeset -p PATH
outypeset -p path
mostra o link entre as duas variáveis:Isso é útil porque torna mais fácil adicionar componentes de remoção ou fazer um loop sobre eles.
Fazer um
typeset -U path
para tornar os elementos únicos também ajuda a manter a$PATH
variável limpa (algo semelhante pode ser alcançadotcsh
comset -f
).