Can someone please tell me what's the correct way to set a bunch of environment variables in the fish shell?
In my .config/fish/config.fish file, I have a function to setup my environment variables like so
function setTESTENV
set -x BROKER_IP '10.14.16.216'
set -x USERNAME 'foo'
set -x USERPASS 'bar'
end
when I type from the command prompt setTESTENV
and do a env
in the command line, I don't see these information.
Environment Variables in Fish
I would like to add that, while @JosEduSol's answer is not incorrect and does help solve the OP problem,
-g
is only setting the scope to be global, while-x
is causing the specified environment variable to be exported to child processes.The reason the above fails, is because @cfpete is setting the env vars inside a function and the default scope will be local to that function.
The variables you are declaring are keep in a local scope inside your function.
Use:
Here "
g
" is for global.another option is to run:
where env_file.txt contains rows of the format
VAR=VALUE
this has the benefit of keeping the variables in a format supported by other shells and tools
Use Universal Variables
If the variable has to be shared between all the current user fish instances on the current computer and preserved across restarts of the shell you have to use
-U
or--universal
:Using
set
with-g
or--global
doesn't set the variable persistently between shell instances