环境变量就像是一张地图,告诉程序员和程序在哪里可以找到所需的资源和工具。
Windows环境变量 接触的很多,图形化界面也很好设置,简单看一下即可。
环境变量是Windows操作系统中用于存储有关系统环境和配置的信息。它们是具有名称和对应值的对象,可以被应用程序和系统组件访问和使用。环境变量在Windows中扮演着连接各个组件和应用程序之间的桥梁作用。
Windows环境变量的配置文件是存储在注册表中的,并不像Linux那样是一个文本文件。 Windows中有两个级别的环境变量:用户级别和系统级别。
用户级别环境变量:这些环境变量只对当前用户有效,不会影响其他用户。
用户级别的环境变量配置存储在注册表的以下位置:
HKEY_CURRENT_USER\Environment
你可以通过以下步骤打开注册表编辑器并访问用户级别的环境变量配置:
regedit
,点击“确定”打开注册表编辑器。HKEY_CURRENT_USER\Environment
键。系统级别环境变量:这些环境变量对所有用户都有效。
系统级别的环境变量配置存储在注册表的以下位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
你可以通过以下步骤打开注册表编辑器并访问系统级别的环境变量配置:
regedit
,点击“确定”打开注册表编辑器。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
键。注意,对于环境变量的更改,特别是对注册表的更改,请务必小心谨慎。不正确的更改可能会导致系统故障或其他问题。所以,一般是在设置中修改环境变量。
在Windows中,可以通过系统属性或命令行来设置环境变量。
通过系统属性:
通过命令行:
set
命令来设置临时环境变量,例如:set MY_VARIABLE=HelloWorld
setx
命令来设置永久环境变量,例如:setx MY_VARIABLE "HelloWorld"
通过“搜索”功能,可以很快打开环境变量设置:
要查看当前环境变量的值,可以通过命令行或图形界面进行操作。
Windows系统中有许多常用的环境变量,其中一些是预定义的,而其他则可以根据需要自定义。以下是一些常见的环境变量:
PATH
:指定可执行文件的搜索路径,使得可以直接在命令行中执行可执行文件。TEMP
、TMP
:指定临时文件的存储路径。USERPROFILE
:指定当前用户的用户文件夹路径。SYSTEMROOT
:指定Windows系统文件夹(通常为C:\Windows)的路径。程序配置:环境变量可以用于配置应用程序的行为。通过设置特定的环境变量,可以影响应用程序的默认设置、文件路径、语言偏好等。
可执行文件的搜索:通过将可执行文件所在的路径添加到PATH
环境变量中,可以使得命令行或脚本可以直接执行可执行文件,而无需指定完整的文件路径。
脚本编程:环境变量可以在脚本编程中使用,用于传递参数、配置选项和设置路径等。这使得脚本编程更加灵活和可配置。
Windows的环境变量长度有限制,但是具体的限制取决于不同的因素,例如操作系统版本、环境变量的类型、设置和读取环境变量的方法等。一般来说,有以下几个方面的限制:
一般来说,所有环境变量的总长度不会超过限定值(32767
)。但是当你编辑某一个环境变量时,可能会出现:此对话框允许将值设置为最长2047个字符的提示,导致你无法添加新的环境变量。
这个就是Windows自己的问题了,举个例子:win 10 已经有“设置”这个功能了,但是进去之后,某些设置却仍然打开的是旧版的“控制面板”。也就是说:设置中的一些选项,可能并不支持Windows的最新标准。
解决方法:
dir /x /ad
命令来查看短文件名。例如,C:\Program Files (x86)可以替换为C:\PROGRA~2。%Siemens%
来代替原来的一长串路径:环境变量是一种在Linux系统中存储和传递配置信息的机制。环境变量是一些以名称和值对的形式存在的变量,它们可以被shell和其他程序使用和修改。环境变量可以影响系统的行为,例如控制命令的搜索路径,设置语言和区域设置,指定临时文件的位置等。
程序配置:环境变量可以用于配置各种应用程序的行为。例如,通过设置JAVA_HOME环境变量,可以告诉系统Java的安装路径,从而使得Java相关的应用程序能够正常运行。
执行程序:环境变量中的路径信息可以让系统找到并执行可执行文件。通过将可执行文件所在的目录添加到PATH环境变量中,可以在终端中直接运行该可执行文件,而无需输入完整的路径。
脚本编程:在编写脚本时,可以使用环境变量来传递参数、配置路径和设置其他相关选项,以实现更灵活的脚本编程。
环境变量可以分为两类:全局环境变量和局部环境变量。
全局环境变量是对所有用户和进程都有效的环境变量,它们通常在系统启动时由系统配置文件或初始化脚本定义。全局环境变量可以用来设置系统级的参数,例如主机名,时区,网络代理等。
局部环境变量是只对当前用户或进程有效的环境变量,它们通常在用户登录时或在运行某个程序时由用户配置文件或命令行定义。局部环境变量可以用来设置用户级的参数,例如用户名,主目录,命令别名等。
Linux系统中,全局环境变量和局部环境变量对应的文件分别是:
全局环境变量对应的文件有:
/etc/profile:
这个文件是所有shell都可以读取的配置文件,它在交互式登录shell启动时被执行。/etc/environment
: 这个文件是存储环境变量的纯文本文件,它在登录时被读取。/etc/bash.bashrc
: 这个文件是针对Bash shell的配置文件,它在交互式非登录shell启动时被执行。/etc/profile.d/
: 这个目录下的所有文件都会被/etc/profile调用并执行。我的全局环境变量:
①/etc/profile
:
这个环境变量是所有shell都可以读取的配置文件,它在交互式登录shell启动时被执行。它的意思是:
- 如果PS1变量存在并且不为空,那么执行以下的命令。PS1变量是用来定义shell的提示符的。
- 如果BASH变量存在并且不等于/bin/sh,那么说明当前使用的是Bash shell。这时,如果
/etc/bash.bashrc
文件存在并且可读,那么执行这个文件中的命令。这个文件是针对Bash shell的配置文件,它在交互式非登录shell启动时被执行。- 否则,如果当前用户的ID等于0,那么说明当前用户是root用户。这时,将PS1变量设置为# 。否则,将PS1变量设置为$ 。
- 如果/etc/profile.d目录存在,那么遍历这个目录下的所有以.sh结尾的文件,如果这些文件存在并且可读,那么执行这些文件中的命令。这些文件通常用来定义一些特定的环境变量或函数。
- 将/root/nvim-linux64/bin/nvim添加到PATH变量中,并将PATH变量导出到当前shell及其子进程的环境中。PATH变量是用来定义系统在执行命令时搜索可执行文件的目录列表的。/root/nvim-linux64/bin/nvim是一个文本编辑器程序的路径。
②/etc/environment
:
这个文件是存储环境变量的纯文本文件,它在登录时被读取。这个文件中定义了PATH变量,它的值是一些目录的列表,以冒号分隔。这些目录是系统在执行命令时搜索可执行文件的地方。比如:/usr/bin下面有很多常用命令:
③/etc/bash.bashrc:
内容比较长,就不展示了
局部环境变量对应的文件有:
局部环境变量一般位于用户主目录下,下面的例子中~
代表root用户的主目录,名称是root
,位置是/root
,用~
来简写代替。
~/.bashrc
是在每次启动一个交互式非登录shell时读取和执行的文件,例如在已经登录的shell中输入bash命令或者打开一个新的终端窗口。这个文件通常用于定义一些针对Bash shell的命令,例如别名,函数,提示符等。
~/.bash_profile
是在每次启动一个交互式登录shell时读取和执行的文件,例如通过ssh或者本地登录到系统时。这个文件通常用于定义一些环境变量,例如PATH,LANG,EDITOR等。这些变量会被后续的shell继承。
一般来说,~/.bash_profile
会包含一个调用~/.bashrc
的语句,这样在登录时就可以同时执行两个文件中的命令。如果~/.bash_profile
不存在,Bash会尝试读取~/.profile
文件,这个文件是所有shell都可以读取的配置文件。
比如,我的用户环境配置文件是:~/.bashrc
和~/.profile
:
.profile
的内容:
它是所有shell都可以读取的配置文件,它在交互式登录shell启动时被执行。它的意思是:
- 如果BASH变量存在并且不为空,那么说明当前使用的是Bash shell。这时,如果~/.bashrc文件存在并且可读,那么执行这个文件中的命令。这个文件是针对Bash shell的配置文件,它在交互式非登录shell启动时被执行。
- 执行mesg n命令,并将错误信息重定向到/dev/null,即忽略错误信息。如果mesg n命令执行成功,那么返回true。mesg n命令是用来禁止其他用户向当前终端发送消息的。这样可以保护当前用户的隐私。
.bashrc
的内容:
略。
注意:
- 在某些Linux发行版中,可能使用其他文件名,如
~/.bash_aliases
或~/.profile
,作为用户的个人环境变量配置文件。- 全局环境变量文件的修改需要超级用户(root)权限,而用户级别的环境变量文件可以由用户自行编辑。
在Linux系统中,有多种方法可以查看和修改环境变量。
使用env
命令显示的是当前环境中的环境变量,包括全局环境变量和用户级别的环境变量。
使用echo
命令可以打印某个环境变量的值,例如echo $PATH
可以显示当前的命令搜索路径(显示的是当前shell的PATH环境变量的内容,它可能包含系统环境变量和用户的环境变量的内容).
使用export
命令可以定义或修改一个环境变量,并将其导出到当前shell及其子进程的环境中。例如export PATH=/usr/local/bin:$PATH
可以将/usr/local/bin 添加到当前的命令搜索路径。
使用unset
命令可以删除一个环境变量,并将其从当前shell及其子进程的环境中移除。例如unset PATH
可以删除当前的命令搜索路径。
使用set
命令可以显示当前shell的所有变量,包括环境变量和shell变量。shell变量是只对当前shell有效的变量,它们不会被导出到其他进程的环境中。
使用source
命令或.
操作符可以执行一个脚本文件,并将其中定义的环境变量导入到当前shell的环境中。例如source ~/.bashrc
或. ~/.bashrc
可以执行用户主目录下的.bashrc文件,并将其中定义的环境变量生效,也就是常说的刷新环境变量。
环境变量中还可以为某个命令指定别名:
alias php80=‘php80 -c /www/server/php/80/etc/php-cli.ini’
这个命令是用来定义一个名为php80的别名,它相当于执行php80 -c /www/server/php/80/etc/php-cli.ini
这个命令。别名是一种简化输入或自定义命令的方式,它可以让你用一个简短的名称来代替一个长的或复杂的命令。这个命令相当于让你每次输入php80时,就相当于输入了php80 -c /www/server/php/80/etc/php-cli.ini,这样可以节省时间和精力。这个命令的含义是用php80这个程序来运行PHP脚本,并指定使用/www/server/php/80/etc/php-cli.ini这个文件作为配置文件。
一般来说我们使用export
和alias
就足够了,但是了解语法,可以帮助我们阅读配置文件。
Linux系统中有许多常见的环境变量,它们有不同的作用和含义。以下是一些常见的环境变量及其说明:
PATH
: 定义了系统在执行命令时搜索可执行文件的目录列表,以冒号分隔。如果一个命令不包含完整的路径,系统会按照这个列表依次查找该命令是否存在。
HOME
: 定义了当前用户的主目录,即登录时默认进入的目录。这个目录通常包含用户的配置文件,数据文件等。
USER
: 定义了当前用户的用户名,即登录时输入的用户名。
SHELL
: 定义了当前用户使用的shell程序,即登录时启动的交互式命令解释器。常见的shell程序有bash, zsh, csh等。
LANG
: 定义了当前用户使用的语言和字符编码,即显示和输入文本时使用的语言规则和字符集。这个变量会影响系统支持的语言和区域设置,例如日期格式,货币符号,排序规则等。
PS1
: 定义了当前shell的提示符,即每次输入命令时显示在命令行前面的字符串。这个变量可以包含一些特殊的转义序列,例如\u
表示用户名,\h
表示主机名,\w
表示当前工作目录等。
TERM
: 定义了当前终端的类型,即显示和输入文本时使用的终端模拟器或控制台。这个变量会影响系统支持的终端功能,例如颜色,光标,键盘映射等。
EDITOR
: 定义了当前用户使用的文本编辑器,即编辑文本文件时默认启动的程序。常见的文本编辑器有vim, nano, emacs等。
LD_LIBRARY_PATH
: 定义了系统在执行程序时搜索动态链接库的目录列表,以冒号分隔。如果一个程序依赖于某些动态链接库,系统会按照这个列表依次查找该库是否存在。
TMPDIR
: 定义了系统在运行时存储临时文件的目录。如果这个变量没有定义,系统会使用默认的临时文件目录,通常是/tmp或/var/tmp。
把 永 远 爱 你 写 进 诗 的 结 尾 ~