Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to configure environment variables in Linux system

2025-01-18 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

This article is about how to configure environment variables in the Linux system. The editor thinks it is very practical, so share it with you as a reference and follow the editor to have a look.

Linux environment variable configuration when customizing the installation of software, you often need to configure environment variables. Here are various ways to configure environment variables.

The environment for all of the following examples is as follows:

System: Ubuntu 14.0

User name: uusama

Need to configure MySQL environment variable path: / home/uusama/mysql/bin

The way Linux reads environment variables reads environment variables:

The export command displays all environment variables defined by the current system

The echo $PATH command outputs the value of the current PATH environment variable

The effect of these 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" 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 where the PATH variable defines the lookup path to run the command With colons: separate paths, with or without double quotes when using the export definition.

Linux environment variable configuration method 1: export PATH uses the export command to directly modify the value of PATH and configure the method for MySQL to enter the environment variable:

Export PATH=/home/uusama/mysql/bin:$PATH # or put PATH in front of export PATH=$PATH:/home/uusama/mysql/bin considerations:

Effective time: effective immediately

Validity period: the current terminal is valid and invalid after the window is closed

Effective scope: valid for current users only

Don't forget to add the original configuration, that is, $PATH, to the environment variable of the configuration to avoid overwriting the original configuration.

Linux environment variable configuration method 2: vim ~ / .bashrc is configured by modifying the ~ / .bashrc file in the user directory:

Vim ~ / .bashrc # adds export PATH=$PATH:/home/uusama/mysql/bin notes on the last line:

Effective time: when a new terminal is opened with the same user, or manual source ~ / .bashrc takes effect

Effective period: permanently valid

Effective scope: valid for current users only

If a subsequent environment variable load file overrides the PATH definition, it may not take effect

Linux environment variable configuration method 3: vim ~ / .bash_profile is similar to modifying ~ / .bashrc file by adding a new path at the end of the file:

Vim ~ / .bash_profile # adds export PATH=$PATH:/home/uusama/mysql/bin notes on the last line:

Effective time: effective when a new terminal is opened with the same user, or manual source ~ / .bash_profile takes effect

Effective period: permanently valid

Effective scope: valid for current users only

If there is no ~ / .profile file, you can edit the ~ / .profile file or create a new one

Linux environment variable configuration method 4: vim / etc/bashrc this method modifies the system configuration and requires administrator permissions (such as root) or write permissions to the file:

# if the / etc/bashrc file is not editable, you need to modify it to be editable chmod-v Ubunw / etc/bashrc vim / etc/bashrc # add export PATH=$PATH:/home/uusama/mysql/bin notes on the last line:

Effective time: the newly opened terminal takes effect, or the manual source / etc/bashrc takes effect

Effective period: permanently valid

Effective scope: valid for all users

Linux environment variable configuration method 5: vim / etc/profile this method modifies the system configuration and requires administrator permission or write permission to the file, similar to vim / etc/bashrc:

# if the / etc/profile file is not editable, you need to modify it to be editable chmod-v Ubunw / etc/profile vim / etc/profile # add export PATH=$PATH:/home/uusama/mysql/bin notes on the last line:

Effective time: the newly opened terminal takes effect, or the manual source / etc/profile takes effect

Effective period: permanently valid

Effective scope: valid for all users

Linux environment variable configuration method 6: vim / etc/environment this method modifies the system environment configuration file and requires administrator permission or write permission to the file:

# if the / etc/bashrc file is not editable, you need to modify it to be editable chmod-v Ubunw / etc/environment vim / etc/profile # add export PATH=$PATH:/home/uusama/mysql/bin notes on the last line:

Effective time: the newly opened terminal takes effect, or the manual source / etc/environment takes effect

Effective period: permanently valid

Effective scope: valid for all users

Linux environment variable loading principle parsing the various configuration methods of environment variables listed above, so how does Linux load these configurations? In what order is it loaded?

A specific loading order can cause the definition of an environment variable with the same name to be overwritten or ineffective.

The classification of 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 ~ / .bash_profile (or ~ / .profile) files, if there is no such file, read ~ / .bashrc, and then read ~ / .bashrc according to the contents of these files.

The method of testing the loading order of Linux environment variables in order to test the loading order of environment variables in different files, we define the same environment variable UU_ORDER in the first line of each environment variable definition file, and the value of this variable is the name of the current file connected to its own value.

The files that need to be modified are as follows:

/ etc/environment

/ etc/profile

/ etc/profile.d/test.sh, create a new file, no folder to skip

/ etc/bashrc, or / etc/bash.bashrc

~ / .bash_profile, or ~ / .profile

~ / .bashrc

Add the following code to the first line of each file, and modify the colon to the absolute file name of the current file accordingly.

Save export UU_ORDER= "$UU_ORDER:~/.bash_profile" after modification, open a new window, and then echo $UU_ORDER to observe the value of the variable:

Uusama@ubuntu:~$ echo $UU_ORDER $UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc can infer the order in which Linux loads environment variables:

/ etc/environment

/ etc/profile

/ etc/bash.bashrc

/ etc/profile.d/test.sh

~ / .profile

~ / .bashrc

Detailed explanation of Linux environment variable file loading from the above test, it can be easily concluded that the order in which Linux loads environment variables is as follows:

System environment variables-> user defined environment variables / etc/environment-> / etc/profile-> ~ / .profile

Open the / etc/profile file and you will find that the / etc/bash.bashrc file is loaded in the code of the file, then check the .sh file in the / etc/profile.d/ directory and load it.

# / 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 if [- d / etc/profile.d]; then for i in / etc/profile.d/*.sh; do if [- r $I]; then. $i fi done unset i fi then open the ~ / .profile file and you will find that the ~ / .bashrc file is loaded in the file.

# 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" is not difficult to find from the code in the ~ / .profile file, which is read only once when the user logs in, and / .bashrc reads it every time the Shell script is run.

Some tips can customize an environment variable file, such as defining uusama.profile under a project, using export to define a series of variables in this file, and then adding: sourc uusama.profile to the ~ / .profile file, so that you can use a series of variables defined by yourself in the Shell script every time you log in.

You can also use the alias command to define aliases for some commands, such as alias rm= "rm-I" (double quotes must be), and add this code to ~ / .profile, so that every time you use the rm command, it is equivalent to using the rm-I command, which is very convenient.

Thank you for reading! This is the end of the article on "how to configure environment variables in the Linux system". I hope the above content can be of some help to you, so that you can learn more knowledge. if you think the article is good, you can share it for more people to see!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report