Linux Environment Variables in Bash Scripting
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,
#!/bin/bash
PATH=”/”
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.
#!/bin/bash
FPATH=”/”
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,
env
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,
echo $HOME
We can create shell variables with environment variables. For example,
MY_DIR=$HOME/roman10/code/
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
PATH=”/usr/bin”
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,
PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:”
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,
export TEST=”test”
We can check by the command,
echo $TEST
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,
X=”1”
export X1=”2”
Now we enter the command below,
echo $X
echo $X1
It will give output “1” and “2”
But if we start another program, say, sh by entering the command,
sh
We enter the commands in sh terminal,
echo $X
echo $X1
It will give empty and “2”. Here X1 is visible to sh, but not X.
Leave a Reply Cancel reply
40% Discount on My Book — Android NDK Cookbook
Android NDK Cookbook ebook 40% discount with promotion code MREANC40 at Packt Publishing The promotion code is valid until 15th June.Categories
- Android Apps (18)
- Android Audio Editor (1)
- TS 2 (3)
- Video Converter Android (8)
- Video2Gif (1)
- Android Tutorial (27)
- Android Dev Tools (1)
- API illustrated (8)
- Multimedia API (3)
- ffmpeg on Android (4)
- NDK (6)
- UI (6)
- Animation (2)
- Code Snippet (2)
- Coding Beyond Technique (18)
- a word, a world (4)
- Bug Rectified (4)
- Programming Habit (1)
- Software as a Career (1)
- Software as User Experience (1)
- Compilers and Related (2)
- ELF (2)
- Computer Languages (31)
- C/C++ (13)
- Java (9)
- JavaScript (2)
- PHP (1)
- Python (8)
- Data Structure & Algorithms (29)
- Bits (1)
- Data Structure (5)
- Integers (10)
- BigInteger (1)
- Prime (4)
- Search (3)
- Sorting (5)
- Strings (5)
- Database (1)
- SQLite (1)
- Digital Signal Processing (33)
- Distributed Systems (17)
- Apache Cassandra (6)
- Apache Hadoop (8)
- Apache Avro (3)
- Apache Nutch (3)
- Apache Solr (1)
- Linux Study Notes (40)
- crontab (1)
- Linux Kernel Programming (8)
- Linux Programming (12)
- IPC (2)
- Linux Network Programming (5)
- Linux Signals (2)
- Linux Shell Scripting (1)
- ssh (3)
- Machinery (30)
- misc (1)
- My Ideas (1)
- My Project (3)
- Mobile Caching (1)
- Selective Decoding (2)
- My Publication (1)
- My Readings (1)
- Networking (15)
- Program for Performance (8)
- Uncategorized (1)
- Virtual Machine (2)
- Web Dev (8)
- web components (3)
- Android Apps (18)
Recent Comments
Archives
- May 2013 (2)
- April 2013 (1)
- March 2013 (4)
- December 2012 (2)
- November 2012 (6)
- October 2012 (6)
- September 2012 (3)
- August 2012 (13)
- July 2012 (15)
- June 2012 (3)
- May 2012 (8)
- April 2012 (4)
- March 2012 (13)
- February 2012 (19)
- January 2012 (9)
- December 2011 (11)
- November 2011 (12)
- October 2011 (4)
- September 2011 (12)
- August 2011 (16)
- July 2011 (15)
- June 2011 (6)
- May 2011 (10)
- April 2011 (13)
- March 2011 (20)
- February 2011 (4)
- November 2010 (2)
- May 2010 (1)
- April 2010 (1)
- February 2010 (1)




