This article brings you six methods of configuring environment variables in Linux. I hope it will be helpful to you.
Linux environment variable configuration
When customizing software installation, it is often necessary to configure environment variables , various configuration methods for environment variables are listed below.
The environment description of all the examples below is as follows:
System: Ubuntu 14.0
User name: uusama
Need to configure the MySQL environment variable path:/home/ uusama/mysql/bin
Linux reading environment variables
How to read environment variables:
The export command displays all environment variables defined by the current system
echo $PATH command outputs the value of the current PATH environment variable
This The effect of executing the two commands is as follows
uusama@ubuntu:~export declare -x HOME="/home/uusama" declare -x LANG="en_US.UTF-8" declare -x LANGUAGE="en_US:" declare -x LESSCLOSE="/usr/bin/lesspipe %s %s" declare -x LESSOPEN="| /usr/bin/lesspipe %s" declare -x LOGNAME="uusama" declare -x MAIL="/var/mail/uusama" declare -x PATH="/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" declare -x SSH_TTY="/dev/pts/0" declare -x TERM="xterm" declare -x USER="uusama" uusama@ubuntu:~ echo $PATH /home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
The PATH variable defines the search path for running the command. Different paths are separated by colon:. When using export definition, you can add double quotes or not.
Linux environment variable configuration method one: export PATH
Use the export command to directly modify the value of PATH and configure MySQL to enter the environment variable:
export PATH=/home/uusama/mysql/bin:PATH # 或者把PATH放在前面 export PATH=PATH:/home/uusama/mysql/bin
Notes:
Effective time: effective immediately
Effective period: valid for the current terminal, invalid after the window is closed
Effective range: only for the current time Don’t forget to add the original configuration, that is, the $PATH part, to the user’s valid
configured environment variables to avoid overwriting the original configuration
Linux environment variable configuration method two: vim ~/.bashrc
Configure by modifying the ~/.bashrc file in the user directory:
vim ~/.bashrc # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
Notes:
Effective time: It will take effect when opening a new terminal with the same user, or manually source ~/.bashrc
Effectiveness period: valid forever
Validity range: valid only for the current user
If subsequent environment variable loading files overwrite the PATH definition, it may not take effect
Linux environment variable configuration method three: vim ~/.bash_profile
Similar to modifying the ~/.bashrc file, you also need to add the new path at the end of the file:
vim ~/.bash_profile # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
Notes:
Effective time: Use the same user to open a new It takes effect when using the terminal, or manually source /.bash_profile to take effect
Effectiveness period: permanently valid
Effectiveness scope: only valid for the current user
If there is no /.bash_profile file, Then you can edit the ~/.profile file or create a new
Linux environment variable configuration method four: vim /etc/bashrc
This method is Modifying the system configuration requires administrator rights (such as root) or write permission to the file:
# 如果/etc/bashrc文件不可编辑,需要修改为可编辑 chmod -v u+w /etc/bashrc vim /etc/bashrc # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
Notes:
Effective time: Open a new terminal to take effect, or manually source /etc /bashrc takes effect
Effectiveness period: permanently valid
Validity scope: valid for all users
Linux environment variable configuration method five: vim /etc/ profile
This method modifies the system configuration and requires administrator rights or write permissions to the file. It is similar to vim /etc/bashrc:
# 如果/etc/profile文件不可编辑,需要修改为可编辑 chmod -v u+w /etc/profile vim /etc/profile # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin
Notes:
Effective time: Take effect when opening a new terminal, or manually source /etc/profile
Effectiveness period: Permanent
Effectiveness scope: Valid for all users
Linux environment variable configuration method six: vim /etc/environment
This method is to modify the system environment configuration file, which requires administrator rights or permission to the file. Write permission:
# 如果/etc/bashrc文件不可编辑,需要修改为可编辑 chmod -v u+w /etc/environment vim /etc/profile # 在最后一行加上 export PATH=$PATH:/home/uusama/mysql/bin注意事项:
Effective time: Take effect when opening a new terminal, or manually source /etc/environment
Effective period: Permanent
Effective scope: For all users Effective
Linux environment variable loading principle analysis
The various configuration methods of environment variables are listed above, so how does Linux load these configurations? What about? In what order are they loaded?
Specific loading order will cause environment variable definitions with the same name to be overwritten or not take effect.
Classification of environment variables
Environment variables can be simply divided into user-defined environment variables and system-level environment variables.
User-level environment variable definition files: /.bashrc, /.profile (some systems are: /.bash_profile)
System-level environment variable definition files: /etc/bashrc, /etc/ profile (some systems are: /etc/bash_profile), /etc/environment
In addition, in the user environment variables, the system will first read the /.bash_profile (or ~/.profile) file. If there is no such file Then read ~/.bash_login, and then read ~/.bashrc based on the contents of these files.
How to test the loading order of Linux environment variables
为了测试各个不同文件的环境变量加载顺序,我们在每个环境变量定义文件中的第一行都定义相同的环境变量UU_ORDER,该变量的值为本身的值连接上当前文件名称。
需要修改的文件如下:
/etc/environment
/etc/profile
/etc/profile.d/test.sh,新建文件,没有文件夹可略过
/etc/bashrc,或者/etc/bash.bashrc
/.bash_profile,或者/.profile
~/.bashrc
在每个文件中的第一行都加上下面这句代码,并相应的把冒号后的内容修改为当前文件的绝对文件名。
export UU_ORDER="$UU_ORDER:~/.bash_profile"
修改完之后保存,新开一个窗口,然后echo $UU_ORDER观察变量的值:
uusama@ubuntu:~echoUU_ORDER $UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc
可以推测出Linux加载环境变量的顺序如下:
/etc/environment
/etc/profile
/etc/bash.bashrc
/etc/profile.d/test.sh
~/.profile
~/.bashrc
Linux环境变量文件加载详解
由上面的测试可容易得出Linux加载环境变量的顺序如下,:
系统环境变量 -> 用户自定义环境变量 /etc/environment -> /etc/profile -> ~/.profile
打开/etc/profile文件你会发现,该文件的代码中会加载/etc/bash.bashrc文件,然后检查/etc/profile.d/目录下的.sh文件并加载。
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ "PS1" ]; then if [ "BASH" ] && [ "BASH" != "/bin/sh" ]; then # The file bash.bashrc already sets the default PS1. # PS1='\h:\w\$ ' if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1=' ' fi fi fi if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r i ]; then .i fi done unset i fi
其次再打开~/.profile文件,会发现该文件中加载了~/.bashrc文件。
# if running bash if [ -n "BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "HOME/.bashrc" ]; then . "HOME/.bashrc" fi fi # set PATH so it includes user's private bin directories PATH="HOME/bin:HOME/.local/bin:PATH"
从~/.profile文件中代码不难发现,/.profile文件只在用户登录的时候读取一次,而/.bashrc会在每次运行Shell脚本的时候读取一次。
一些小技巧
可以自定义一个环境变量文件,比如在某个项目下定义uusama.profile,在这个文件中使用export定义一系列变量,然后在~/.profile文件后面加上:sourc uusama.profile,这样你每次登陆都可以在Shell脚本中使用自己定义的一系列变量。
也可以使用alias命令定义一些命令的别名,比如alias rm="rm -i"(双引号必须),并把这个代码加入到~/.profile中,这样你每次使用rm命令的时候,都相当于使用rm -i命令,非常方便。
相关推荐:《Linux视频教程》
The above is the detailed content of 6 ways to configure Linux environment variables, recommended to collect!. For more information, please follow other related articles on the PHP Chinese website!