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
looks like you'll have to declare a block to get the variable to fall out of scope:
begin; set -lx RAILS_ENV staging; rake db:migrate; endwhich, IMO, is way too verbose and is the biggest thing missing in fish.