0. A Stupid Mistake
I wrote shell script from time to time, but never learned it seriously. So I wrote a script contains lines as below,
ls -l $PATH
And then I got this error,
./test.sh: line 3: ls: command not found
I struggled a little bit and suddenly realized long time ago I made the same mistake. PATH is an environment variable and it’s overwritten by my script. In the bash script, the shell looks at the directories defined in PATH for the command. In the script above, the PATH variable has been overwritten, and therefore the shell cannot find the command.
Once I changed the code to below, it works.
ls -l $FPATH
The mistake is stupid, and we all make mistakes like this. But I did it twice. 🙁
1. Linux Environment Variables
Environment variable contains information shared by one or more applications. It helps one to change the settings for one or more applications easily.
One can list all environment variables by the command,
If you simply want to check a value of a specific environment variable, use the command echo followed by the variable name (say HOME) preceded by “$” sign,
We can create shell variables with environment variables. For example,
2. Set Linux Environment Variables
Define Environment Variables Globally
To define a environment variable for all users, one can use /etc/bash.bashrc or /etc/profile
For example, add a line below
Define Environment Variables for a Particular User
To define a environment variables for a particular user, one can use ~/.bashrc or ~/.profile.
For example, add a line below,
Define Environment Variables for a Particular Session
To define a environment variable for a particular session, we can use the export command.
For example, enter the command below,
We can check by the command,
3. Different Between X=”1” and export X=”1”
If you simply type X=”1” in the shell, the variable will be visible in the shell. It won’t be shown in “env” output. And if you launch another program in the same shell, that program won’t be able to see it as well.
On the contrast, if you use export, the variable will be visible in “env” output and the other program launched in the shell.
For example, we type the following in the shell,
Now we enter the command below,
It will give output “1” and “2”
But if we start another program, say, sh by entering the command,
We enter the commands in sh terminal,
It will give empty and “2”. Here X1 is visible to sh, but not X.