Run foreign bash scripts and capture exported environment variables
Shell
252
37 commits
updated Jul 6, 2026
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.
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
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"
405 followers · starred Jun 2022
38 followers · starred Mar 2017
103 followers · starred Dec 2022
39 followers · starred Mar 2017
Shell
100.0%
Run foreign bash scripts and capture exported environment variables
Shell
252
37 commits
updated Jul 6, 2026
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.
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
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"
405 followers · starred Jun 2022
38 followers · starred Mar 2017
103 followers · starred Dec 2022
39 followers · starred Mar 2017
Shell
100.0%