Para adicionar algo ao $PATH em fish, eu uso
fish_add_path -a ~/foo/bar
Então o peixe acrescenta ~/foo/bar
ao meu ~/.config/fish/fish_variables
:
SETUVAR fish_user_paths:/Users/john/foo/bar
Então, é correto dizer que para remover /Users/john/foo/bar
de $PATH, tenho duas opções:
para editar o
fish_variables
arquivopara usar a seguinte função:
// https://github.com/fish-shell/fish-shell/issues/8604#issuecomment-1169638533 function remove_path if set -l index (contains -i "$argv" $fish_user_paths) set -e fish_user_paths[$index] echo "Removed $argv from the path" end end
E a segunda parte da pergunta: Como usar corretamente essa função? Eu salvei como remove_from_path.fish
, executei como remove_from_path.fish "/Users/john/foo/bar"
, mas ela não parece remover /Users/john/foo/bar
de $PATH. O que estou fazendo errado?
Se você salvá-lo como um arquivo de script, o fish executará esse arquivo, definirá a função e não fará nada.
Normalmente, você salvaria isso como uma função fish - coloque-o em seu
~/.config/fish/config.fish
, ou salve-o como um arquivo independente em~/.config/fish/functions/remove_path.fish
(o nome deve corresponder ao nome da função!), e então execute-o como apenassem o ".fish". Com isso, fish conhece a função e a chama.
Ou, se você quiser usar o arquivo de script, você chamaria a função dentro:
Isso iniciará uma segunda instância fish, que removerá o caminho. Isso funciona porque variáveis universais são compartilhadas entre todas as instâncias fish, mas é um pouco bobo.