Details and examples of Linux environment variables
- 2020-05-24 06:41:54
- OfStack
Linux environment variable
~/.bash_profile && ~/.bashrc
Configuration files such as "/etc/profile", "~/.bash_profile "will be automatically executed when the user logs into the Linux operating system.
The execution process goes like this:
When logging into the Linux system, start "/etc/profile" first. Then launch "~/.bash_profile "in the user directory, If "~/.bash_login "and "~/.profile" exist, it will be executed.Let's see what's in the file "~/.bash_profile"
$cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/home/work/local/python/lib/python2.6/site-packages/django/bin/:$HOME/bin:/home/work/local/mysql5/bin/;
LD_LIBRARY_PATH=/home/work/local/mysql5/lib/mysql
alias py='/home/work/local/python/bin/python'
export PATH LD_LIBRARY_PATH
unset USERNAME
You can see that the ~/.bash_profile file first calls ~/.bashrc, and then loads PATH and LD_LIBRARY_PATH.
Environment variable related configuration files
/etc/profile is a global function in which the variables set are applied to all users, and the variables set in ~/.bash_profile can inherit the variables in /etc/profile and be used by users.
~/.bash_profile is interactive, login mode into bash operation ~/.bashrc is an interactive non-login way into the bash operationUsually the two Settings are about the same, so usually the former will call the latter.
crontab execution environment
Everyone knows that crontab is a good thing. It can perform some tasks regularly, help you monitor the system status, and help you do some mechanical things repeatedly every day. One bad thing about crontab, however, is that it does not always read environment variable parameters from user profile files by default. This often results in a script that is successful when executed manually, but fails when crontab tries to get it to execute regularly
The problem with general crontab not running is caused by the fact that environment variables are not always recognizable in crontab.
When running crontab, the program is called in non_login mode, and ~/.bash_profile is not called in advance. Therefore, the crontab running environment is much smaller than the login running environment. If the program involves environment variables used by ~/.bash_profile, then parts of the program that work in login mode will not work under crontab.
Ultimate recommended solution:
30 12 * * * source ~/.bashrc && cd /home/work/mydir && ./myproj
Thank you for reading, I hope to help you, thank you for your support of this site!