bash tem uma sintaxe especial para definir variáveis de ambiente, enquanto o peixe usa um builtin. Eu sugiro escrever seu arquivo .env assim:
setenv VAR1 val1
setenv VAR2 val2
e, em seguida, definindo setenv
apropriadamente nos respectivos shells. No bash (por exemplo, .bashrc):
function setenv() { export "$1=$2"; }
. ~/.env
Em peixes (por exemplo, config.fish):
function setenv; set -gx $argv; end
source ~/.env
Observe que o PATH exigirá algum tratamento especial, já que é uma matriz em fish, mas uma string delimitada por dois-pontos no bash. Se você preferir escrever setenv PATH "$HOME/bin:$PATH"
em .env, você pode escrever o setenv do fish assim:
function setenv
if [ $argv[1] = PATH ]
# Replace colons and spaces with newlines
set -gx PATH (echo $argv[2] | tr ': ' \n)
else
set -gx $argv
end
end
Isso irá manipular incorretamente os elementos no PATH que contêm espaços, pontos-e-vírgulas ou novas linhas.
O constrangimento no PATH é devido a misturar strings delimitadas por dois pontos com arrays verdadeiros. A maneira preferida de anexar ao PATH em peixes é simplesmente set PATH $PATH ~/bin
.