notes/scripts/tutorials_notes/export.txt
2022-06-09 12:59:03 -07:00

44 lines
1.6 KiB
Text
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Exports in Bash require a bit of a different mindset than other programming languages, but reflecting on how this works might also inform you on
how exporting works in other languages, so let's keep an open mind.
In bash we simply defign variables through assignment, like so:
myVar="my string"
echo $myVar
my string
Now let's say we open another bash instance by actually invoking the bash shell, then what happens if we try and reference $myVar?
bash # new bash instance
echo $myVar
# returns nothing
This is because we defined a localized variable to the particular shell session. Now, we could do a work around and in our bashrc outright define a new
variable so that whenever we invoke bash, the rc document is read and that is set for us, but that is a sort of cheat. The proper way to do this sort of thing (and probably useful in a variety of contexts, is to use the export keyword)
export myVar="my string"
bash
echo $myVar
my string
There are many options to this, here is the tldr documentation regarding export (tldr export):
Command to mark shell variables in the current environment to be exported with any newly forked child processes.
More information: https://www.gnu.org/software/bash/manual/bash.html#index-export.
Set a new environment variable:
export VARIABLE=value
Remove an environment variable:
export -n VARIABLE
Mark a shell function for export:
export -f FUNCTION_NAME
Append something to the PATH variable:
export PATH=$PATH: path/to/append
So we have a lot of options to keep in mind. This could possibly be useful in say, a tmux session.