Reputation: 10393
In tcsh
, I have the following script working:
#!/bin/tcsh
setenv X_ROOT /some/specified/path
setenv XDB ${X_ROOT}/db
setenv PATH ${X_ROOT}/bin:${PATH}
xrun -d xdb1 -i $1 > $2
What is the equivalent to the tcsh setenv
function in Bash?
Is there a direct analog? The environment variables are for locating the executable.
Upvotes: 95
Views: 273886
Reputation: 154101
Check for a local or environment variables for a variable called LOL in Bash:
$ set | grep LOL
$
$ env | grep LOL
$
Sanity check, no local or environment variable called LOL.
Set a local variable called LOL in local, but not environment. So set it:
$ LOL="so wow much code"
$ set | grep LOL
LOL='so wow much code'
$ env | grep LOL
$
Variable 'LOL' exists in local variables, but not environment variables. LOL will disappear if you restart the terminal, logout/login or run exec bash
.
Set a local variable, and then clear out all local variables in Bash
$ LOL="so wow much code"
$ set | grep LOL
LOL='so wow much code'
$ exec bash
$ set | grep LOL
$
You could also just unset the one variable:
$ LOL="so wow much code"
$ set | grep LOL
LOL='so wow much code'
$ unset LOL
$ set | grep LOL
$
Local variable LOL is gone.
Promote a local variable to an environment variable:
$ DOGE="such variable"
$ export DOGE
$ set | grep DOGE
DOGE='such variable'
$ env | grep DOGE
DOGE=such variable
Note that exporting makes it show up as both a local variable and an environment variable.
Exported variable DOGE above survives a Bash reset:
$ exec bash
$ env | grep DOGE
DOGE=such variable
$ set | grep DOGE
DOGE='such variable'
Unset all environment variables:
You have to pull out a can of Chuck Norris to reset all environment variables without a logout/login:
$ export CAN="chuck norris"
$ env | grep CAN
CAN=chuck norris
$ set | grep CAN
CAN='chuck norris'
$ env -i bash
$ set | grep CAN
$ env | grep CAN
You created an environment variable, and then reset the terminal to get rid of them.
Or you could set and unset an environment variable manually like this:
$ export FOO="bar"
$ env | grep FOO
FOO=bar
$ unset FOO
$ env | grep FOO
$
Upvotes: 34
Reputation: 4721
The reason people often suggest writing
VAR=value
export VAR
instead of the shorter
export VAR=value
is that the longer form works in more different shells than the short form. If you know you're dealing with bash
, either works fine, of course.
Upvotes: 47
Reputation: 7591
VAR=value
sets VAR to value.
After that export VAR
will give it to child processes too.
export VAR=value
is a shorthand doing both.
Upvotes: 14
Reputation: 411310
export VAR=value
will set VAR to value. Enclose it in single quotes if you want spaces, like export VAR='my val'
. If you want the variable to be interpolated, use double quotes, like export VAR="$MY_OTHER_VAR"
.
Upvotes: 140
Reputation: 239988
I think you're looking for export
- though I could be wrong.. I've never played with tcsh before. Use the following syntax:
export VARIABLE=value
Upvotes: 11