Foreign Environment
A foreign environment interface for Fish shell
Foreign environment wraps application execution in a way that environment variables that are exported or modified get imported back into fish. This makes possible running popular bash scripts, like the excellent nvm
.
Install
Be sure to have Oh My Fish installed, so you just need to:
omf install foreign-env
If you dislike shell frameworks, you can still use Foreign Environment in Fish! Clone this repo somewhere and append to your ~/.config/fish/config.fish
:
set fish_function_path $fish_function_path <insert path to foreign-env repo>/functions
Usage examples
You can use bash syntax to export variables:
fenv export PYTHON=python2
This will have the same effect as typing:
set -g -x PYTHON python2
You can also call multiple commands, separated by semicolon:
fenv source ~/.nvm/nvm.sh \; nvm --help
When commands aren't double quoted, you need to escape semicolon with slash \;
to prevent fish from interpreting it. Or just quote the whole command:
fenv "source ~/.nvm/nvm.sh; nvm --help"
Caveats
- Currently we only handle environment variables that are added or modified. If a variable is unset (removed from environment) it will not be removed from fish.