Você leu esse comentário incorretamente.
Em shells ao estilo Bourne, como bash e zsh, o comando set
é uma construção que faz duas coisas:
- define opções de shell, por exemplo
set -x
ativa a opçãoxtrace
(rastreamentos de depuração de impressão); - quando chamado com argumentos não opcionais, define os parâmetros posicionais (
$1
,$2
,…, acessados coletivamente como"$@"
). - Como uma exceção, se a opção
-A
ou+A
for aprovada,set
será atribuído à matriz especificada em vez de aos parâmetros posicionais.
O comando set env $PATH
define os parâmetros posicionais para uma lista de dois: env
e o valor da variável PATH
. Isso não é útil.
As chamadas para set
com argumentos não opcionais são úteis somente dentro de funções e scripts, não em .zshrc
. Embora você possa ter chamadas para set
com opções, as opções mais úteis são definidas em setopt
.
.inputrc
é um arquivo de configuração para o bash e alguns outros programas que usam a biblioteca readline . Ele contém principalmente atalhos de teclado e algumas configurações de opção do formulário set SETTING VALUE
(mas não há nenhuma configuração chamada env
). Essas opções estão relacionadas à edição da linha de comando. Zsh não usa readline, então .inputrc
não é relevante para zsh.
Eu não sei o que você estava tentando fazer com a linha set env $PATH
. Se você quiser exportar o PATH para o ambiente, a sintaxe será export PATH
; no entanto:
-
PATH
já foi exportado, não é necessário chamarexport
novamente, mesmo que você modifique o valor (a exportação de uma variável de ambiente modificada era necessária apenas no shell Bourne antigo). - Você não deve modificar as variáveis de ambiente em
.zshrc
, pois esse arquivo é lido por todos os shells interativos. Uma variável definida em.zshrc
substituiria qualquer coisa definida pelo programa de chamada e afetaria apenas os programas iniciados por meio desse shell. O local certo para definir suas variáveis de ambiente é em~/.profile
,~/.zprofile
,~/.pam_environment
ou outros arquivos lidos no início de sua sessão. Veja Existe um arquivo equivalente ".bashrc" lido por todos os shells? e as postagens vinculadas.
Se você quiser alterar o caminho, é necessário atribuir a ele:
PATH=/completely/new:/value/of/PATH
PATH=/directory/to/add/at/the/beginning:$PATH
PATH=$PATH:/directory/to/add/at/the/end
Zsh (como (t)csh
de onde foi copiado) fornece uma variável chamada path
(todas em minúsculas), que é uma matriz contendo a mesma lista de diretórios que PATH
. Qualquer atualização para PATH
afeta automaticamente path
e vice-versa. Então, ao invés de manipular PATH
, você pode fazer coisas como
path=(/completely/new /value/of/PATH)
path=(/directory/to/add/at/the/beginning $path)
path+=/directory/to/add/at/the/end
path+=(/one/more /and/another)