Linux环境变量
介绍
环境是一个区域,其中包含有关各种程序和应用程序行为方式的信息。
应用程序使用Linux环境变量来获取有关环境的信息。
每次创建新的Shell会话时都会配置环境。
更改Linux环境变量可帮助用户控制它们如何通过Shell与程序交互,用于Shell窗口外观的默认值,使用的Shell类型,默认主目录等。
Linux环境变量文件
设置环境所需的信息通过称为初始化的过程通过各种文件获得。
操作系统通过读取/etc/profile
和.profile
文件来执行此过程。
/etc/profile文件受Linux管理控制,并且包含用户无法编辑的基本信息。
.profile文件完全在用户控制之下,可用于修改环境。
如果使用bash shell,则可以在.bash_profile和.bashrc文件中创建用户环境变量。
如果这些文件不存在,则操作系统将继续创建环境,并且不会显示任何错误。
设置好环境后,终端会提示用户输入(用$表示)。
Linux环境变量
这些是名称/值对。
可以使用以下5个主要命令来处理环境变量。
- printenv
- env
- set
- export
- unset
让我们逐一研究这些命令。
printenv可以用来打印环境变量的值。
如果未指定键,则所有名称/值对都将打印为输出。
这些仅包括具有全局作用域的变量。
printenv命令示例Linux环境变量按约定以大写字母定义。env也可以打印出名称/值对,例如printenv。
此命令还仅打印具有全局作用域的变量。
但是,它不能用于打印环境变量的特定值。set用于打印shell变量,环境变量,局部变量和shell函数。
这些包括具有局部和全局范围的变量。
set命令示例使用export可以创建新的环境变量,即使在关闭Shell会话之后,这些变量仍将保留。
unset用于取消绑定或者删除环境变量。
一些重要的预定义环境变量
LANG: Contains current system language.USERNAME: Contains username of the current user.PWD: Contains path of the current directory.PATH: Contains colon separated list of directories in which system looks for executables.HOME: Contains path of the home directory.SHELL: Contains path to the user's preferred shell.EDITOR: Contains command to run lightweight editor. Eg: /usr/bin/nano
VISUAL: Contains command to run editor used for heavy editing tasks. Eg: Vi
(Vim)BROWSER: Contains command to run default web-browser.
环境变量运算
让我们看一下Linux中一些常见的环境变量操作。
1.创建新的环境变量
只需输入新的变量名称并在"""中为其分配一个值(以" ="符号分隔)即可轻松创建新变量。
" ="和变量名称/值之间不能有空格。
否则,终端将返回错误。
创建变量后,将使用" echo"命令显示其值。
新的环境变量示例
如上例所示,在使用echo显示值时,必须在变量名称前加一个$符号。
但是,在创建新变量时不需要。
现在我们已经创建了一个新的环境变量,让我们尝试在由printenv命令显示的变量列表中找到它,并打印出它的值。
可以使用grep命令来完成。
grep env变量示例
没有输出显示。
这是因为即使我们定义了一个新的环境变量,我们仍要将其"导出"到包含所有变量名称的文件中。
导出允许变量被其他程序和子shell访问。
这是通过使用上一节讨论的export
命令来实现的。
$export [VARIABLE_NAME]
导出命令示例
现在显示变量的值。
甚至可以在新的子Shell中对其进行访问。
subshell导出示例
我们可以通过键入exit
命令退出子shell。
这使我们回到了原始的shell。
2.更改现有变量的值
只需给它们分配一个新值,就可以编辑现有变量。
我们可以看到通过使用echo
打印变量值所做的更改。
更改环境变量值
3.删除环境变量
unset命令用于删除现有的环境变量。
$unset [VARIABLE_NAME]
未设置命令示例
持久性与非持久性环境变量
到目前为止,我们处理的所有环境变量都是非持久变量。
对这些所做的更改只会持续到当前shell程序处于活动状态,并且不会影响新的shell程序窗口。
当前会话关闭后,对变量进行的所有更改(创建或者编辑)都将丢失。
为了通过新的会话和窗口保留更改,我们可以创建持久性环境变量。
这些是通过在主目录中的环境变量文件-.profile,.bash_profile和.bashrc中定义变量来创建的。
我们可以使用nano或者vim打开.bashrc
文件。
访问.bashrc文件
使用export命令在.bashrc文件中的任何地方定义一个新变量。
保存更改并退出文件。
在.bashrc中定义env变量
关闭当前的终端会话,然后打开一个新的会话。
现在,打印刚刚使用echo
命令创建的环境变量。
持久环境变量输出示例
我们可以看到,即使在创建新的终端会话并关闭前一个会话之后,该变量仍然存在。