Comments (2)
how bass import bash functions to fish when sourcing a file
Bass does not really import bash functions. When you source a bash script in bash, two things can happen:
- the script might "launch" other programs to do something;
- the script can alter the current bash process to change environment variables (which then get "inherited" by any programs launched by the bash process)
When you source a bash script (e.g. nvm.sh
) through bass, bass creates a temporary wrapper bash script that roughly does the following when sourced:
- read all environment variables and remember them
- source the original bash script (e.g.
nvm.sh
) - re-read all the environment variables and compare what variables have been changed/added/removed
Bass then launch a bash subprocess and source the above wrapper script.
Now let's look at the two things that original script (nvm.sh
) wants to do:
- the script might "launch" other programs to do something: this is not impacted.
- the script can alter the current bash process to change environment variables: the change is only done to the bash subprocess. However, because the wrapper script monitors the change to the environment variables, the changes are then passed to Bass, and bass will replay the changes in the fish shell.
The reason you have to source nvm every time you use it is because you use nvm through its subcommands (like nvm use
). Bass does not import nvm functionality to fish, so Bass still has to invoke the nvm with subcommands in a bash shell. Because Bass has to use a new bash shell subprocess to run the subcommand, it has to ask each subprocess to source nvm.sh to get the nvm functionality before running the subcommand.
Let me know if this makes sense.
from bass.
Yes totally ! Thanks so much for the explanation ! I close the issue here (:+1:
from bass.
Related Issues (20)
- Annoying virtualenv conflict HOT 1
- Newlines sourced as \\n string literals
- append_path: command not found
- Quotes disappear from arguments when running script through bass HOT 3
- No module named 'json' HOT 3
- bass -d "source someshell.sh" not exactly stay the same every time
- %WSLENV%: invalid variable name HOT 2
- Command 'python' not found HOT 5
- "Variables may not be used as commands" HOT 2
- variables cannot be bracketed HOT 1
- "Bass internal error!" when status code is not 0 HOT 5
- Sourcing bash alias with question mark triggers `No matches for wildcard` error HOT 3
- cannot read file system information bug HOT 1
- `$1` is set in contrast to bash HOT 8
- Test scripts: using double `dirname` does not work if command line is `./test_dollar_on_output.fish` HOT 1
- Alias with $* does not get correctly converted HOT 1
- Significantly slower to source paths to a different directory HOT 4
- Bass and ssh-agent aren't interacting well on Linux HOT 3
- Can bass convert script files? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bass.