When using the Fish shell, you may need to run commands with local variables, like the following (Bash):
RAILS_ENV=staging rake db:migrate
This doesn't work in Fish, as setting a local variable follows another syntax, using the set
command.
You can achieve the same result with the following syntax:
set -lx RAILS_ENV staging; rake db:migrate
The flags set the variable as local (l
) and export it to child processes (x
). You may not need the latter depending on the command you want to run.
It's a bit verbose, so you can define a function to make it easier
function v
set -lx $args
end
Then you can type:
v RAILS_ENV staging; rake db:migrate
This is not the same, though, as the environment variable remains set in the particular shell. This could cause issues if you later expect RAILS_ENV to be development in the same shell session.