设置环境变量的问题在这里很常见,在大多数情况下,答案与彼此。
所以问题是:什么是环境变量,例如可执行文件
PATH
,我该如何在主要版本上更改和使用它们?操作系统?一个好的答案将包括对什么环境变量(尤其是
PATH
)对操作系统意味着什么的简单说明,以及有关如何相应地设置和读取它们的简单准则。#1 楼
什么是环境变量?环境变量保存与当前环境相关的值,例如操作系统或用户会话。
Path
其中之一在Windows,Linux和Mac OS X上,最著名的称为
PATH
。它指定可执行程序*在计算机上的目录,这些目录可以在不知道并在命令行上键入文件整个路径的情况下启动。 (或者在Windows中,在“开始”菜单或 + R中运行对话框)。在Linux和Mac OS X上,它通常包含与当前用户相关的所有
bin
和sbin
目录。在Windows上,它至少包含C:\Windows
和C:\Windows\system32
目录-这就是为什么您可以从命令行或“运行”对话框运行calc.exe
或notepad.exe
的原因,而不是firefox.exe
的原因。 (Firefox位于C:\Program Files\Mozilla Firefox
中。有关如何包括Firefox的信息,请转到此处。)例如,在Windows的命令行中键入calc
(可以省略.exe
)将启动Windows。计算器。*您可以通过编辑
.exe
来添加对%PATHEXT%
以外的文件扩展名的支持。Other
其他变量可能会告诉程序什么样的使用终端(在Linux / Mac OS X上为
TERM
),或者在Windows文件夹所在的Windows(例如,%WINDIR%
为C:\Windows
)上使用终端。创建新的环境变量
在Windows,Linux和Unix中,可以创建新的环境变量,然后在启动时将其值提供给所有程序。
在编写脚本或已安装的程序或程序时可以使用此变量。部署到多台计算机,并且需要引用特定于这些计算机的值。尽管可以使用特定于程序的配置设置来达到类似的效果,但是如果多个程序需要访问相同的值,则使用环境变量更容易做到这一点。
Windows
GUI
打开
Control Panel » System » Advanced » Environment Variables
。在“运行”对话框( + R)中键入
control sysdm.cpl,,3
,然后单击Environment Variables
。要编辑用户变量,您还可以在“运行”对话框中键入
%windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
。
右键单击“我的电脑”,然后单击“属性”,或直接按 +断裂。
在XP中,请点击
Advanced » Environment Variables
。 在Vista +中,单击
Advanced system settings » Environment Variables
。还有许多其他方法可以到达同一位置,例如通过在“开始”菜单/屏幕搜索框中键入“环境变量”,然后
Windows中的环境变量分为用户和计算机/系统特定的值。您可以在那里查看和编辑其值。启动时它们的当前值可用于所有程序。
还有Rapid Environment Editor,它可以帮助在Windows中设置和更改环境变量,而无需深入系统设置。可以非常方便地编辑路径环境的另一个Windows开源程序是路径编辑器。
命令行
Format
环境变量窗口用百分号(%)表示,并在名称周围:
%name%
echo
要在
cmd.exe
中显示环境变量的值,请键入echo %name%
。C:\>echo %USERPROFILE%
C:\Users\Daniel
设置
要创建/设置变量,请使用
set varname=value
:C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures
C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2
要附加/添加变量,请使用
set varname=value;%varname%
:C:\>set Penguins=C:\Linux
C:\>set Penguins=C:\Windows;%Penguins%
C:\>echo %Penguins%
C:\Windows;C:\Linux
以这种方式设置的环境变量可用于(其余)
设置它们的命令提示符过程的持续时间,
,并且可用于设置变量后启动的过程。
setx
要创建/永久设置变量,请使用
setx varname "value"
:C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"
[Restart CMD]
C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures
与
set
不同,没有等号,并且如果值包含空格,则应将其括在引号中。请注意,变量可能会扩展为带空格的字符串(例如,%PATH%
变为C:\Program Files
),因此最好在包含任何变量的值周围加上引号。您必须手动将
setx
添加到Windows早期版本比Vista.Windows XP Service Pack 2支持工具 Windows环境变量列表
这里是Windows内置的默认环境变量的列表。
%WINDIR%
,%SystemRoot%
,%USERPROFILE%
和%APPDATA%
是一些示例。与Windows中的大多数名称一样,它们不区分大小写。
Unix派生工具(FreeBSD,GNU / Linux,OS X)
环境Linux中的变量以美元符号($)为前缀,例如$ HOME或$ HOSTNAME。许多众所周知的标准变量都用大写字母表示,以表明这一点。请记住,变量名称区分大小写,这意味着从外壳程序的角度来看,$ User和$ USER完全无关。
Unix派生在大多数位于
/etc
文件夹中的shell脚本中定义系统范围的变量,但是可以将用户特定的值赋予位于主文件夹中的脚本中的那些变量(例如/etc/profile
,$HOME/.bash_profile
)。主文件夹中的.profile
文件是定义用户变量的常用位置。 设置变量
这些文件是常规的Shell脚本,不仅可以包含环境变量声明。要设置环境变量,请使用
export
。要在终端中显示当前定义的环境变量,请运行env
。 export
命令是定义变量的标准方法。语法非常直观。对于这两条线,结果是相同的,但是在需要移植到POSIX Bourne之前的外壳的情况下,首选第一种方法。var=value; export var
export var=value
C shell及其后代使用完全不同的语法;此处的命令是
setenv
。有关此主题的更详尽讨论,请参见Linux文档项目Path HOWTO。 “ Unix”比Linux。除了已经提到的文件之外,还可以在以下文件中修改$ PATH:
/etc/paths
包含添加到路径的所有默认目录,例如/bin
和/usr/sbin
。 br /> /etc/paths.d
中的任何文件—安装程序通常使用它们来使外壳程序提供它们提供的可执行文件,而无需接触系统范围或特定于用户的配置文件。这些文件每行仅包含一个路径。例如,/ Programs / Mozilla / Calendar / bin。setx)Windows Vista和Windows 7中的环境变量在运行对话框中添加可执行文件Mac OSX技巧-设置环境变量TLDP:路径方法
评论
从Windows Vista开始,您可以使用SETX进行永久更改。它的语法略有不同。必须从Windows Server 2003 Resource Kit中为NT的早期版本添加SETX。
–天堂
2011年5月16日23:58
@paradroid尼斯,不知道(不是Windows用户)。该主题是社区Wiki,您可以继续进行操作,只需编辑该信息即可。
–丹尼尔·贝克♦
2011年5月17日下午4:05
@JdeBP本节标题旨在参考如何在用户界面(在Windows上称为shell)上设置这些值,这与下面的命令行界面相反。我在10小时前甚至还没有看到您的评论之前就对其进行了编辑。没有人提到这仅适用于资源管理器。
–丹尼尔·贝克♦
11年5月24日在18:15
@JdeBP您链接到的答案在这种情况下实际上并不适用,因为您曾讨论过在注册表中设置值。通过对话框进行设置将广播我想象的WM_SETTINGCHANGE,因此将新值通知有关各方。这就是为什么我问它在这里如何应用。制作粗体字不会改变其含义,也不会使其更容易理解,就像重复同一句话一样,只是声音更大。另外,我在几个小时前编辑了这篇文章,以特别提及进程启动时设置的接收值。
–丹尼尔·贝克♦
11年5月24日在18:19
@JdeBP您可能还会注意到,这个问题本质上是相当基本的。仔细地解释如何改变环境变量的分布的复杂性(严重的是,WM_SETTINGCHANGE?Windows API?这不是这个问题的读者!)可能不是一个好主意,因为这可能会使读者感到困惑,而不是解释这些变量是什么。关于。
–丹尼尔·贝克♦
11年5月24日在18:23
#2 楼
这篇文章从技术上来说比Daniel的观点要多,但是并没有解释太多概念。维基百科的文章也是很好的参考。
Linux和大多数BSD
在大多数命令行shell中,都是临时环境使用
export
(sh,bash,zsh)或setenv
(csh,tcsh)命令设置变量。在bash或zsh中将
$HOME/bin
前置到$PATH
的示例:export PATH="$HOME/bin:$PATH"
(在这种特殊情况下,由于
export
已经是环境的一部分,因此PATH
是不必要的。)csh,tcsh:
setenv PATH "$HOME/bin:$PATH"
可以在几个单独的阶段中设置持久性环境变量:
登录:
登录会话设置:Linux
pam_env
,通常从/etc/environment
中读取终端登录名:Shell的“配置文件”文件。
bash
使用/etc/profile
和第一个:~/.bash_profile
,~/.bash_login
和~/.profile
。手册页bash(1)
部分调用。通常,用户的配置文件也包含对
~/.bashrc
的显式调用。zsh
:手册页zsh(1)
部分启动/关闭文件。csh
和其他外壳:请参见适当的手册页。图形登录名:不确定;可能会因登录管理器而异。 GDM似乎在我的系统中读取
~/.profile
。打开终端窗口:
bash
使用/etc/bash.bashrc
和~/.bashrc
。Windows NT系列
在命令提示符(
cmd.exe
)中,使用set name=value
更改环境要将
c:\bin
附加到%PATH%
,请使用:从它。要进行永久更改,请使用控制面板→系统→高级→环境变量。 (docs)
注意:尽管用户设置通常会覆盖系统设置,但
cmd.exe
变量会特别处理:系统设置和用户设置都合并为最终值。存储更改到Registry(请参见下文),并立即应用到Explorer(图形外壳)创建的所有新进程,例如通过“开始”菜单。
系统范围的环境变量将保留在其中注册表
PATH
并在系统启动时加载。用户环境保存在
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
中,并在用户登录时加载。默认情况下,系统还会在以下位置查找
HKCU\Environment
命令set
文件。MS-DOS,16位Windows,Windows 9x系列
在MS-DOS提示符(
AUTOEXEC.NT
)中,使用类似在WinNT中。类似地,以交互方式运行
command.com
仅会影响一个set name=value
实例以及从中启动的任何新进程。进行持久更改,添加或编辑适当的q431在
set
中出现2079q行,然后重新启动。避免重新启动的变通办法,对于Windows 9x:打开MS-DOS Prompt窗口,设置适当的变量,关闭现有的Explorer进程(开始→关闭向下→按住Ctrl + Shift的同时单击“取消”),从MS-DOS提示符窗口运行
command.com
。VMS
(可以
DCL没有“路径”的概念,但是可以在
set
中放置各种符号和命令定义。评论
VMS部分错误。 DCL具有用于“自动外部命令”的DCL $ PATH。
– JdeBP
2011年5月24日7:17
#3 楼
对于bash
外壳PATH
全局(非终端)环境变量,我遵循在Ubuntu VM安装中使用的约定-其他外壳将有所不同:注意:整个外壳启动过程,即
.bashrc
,.profile
等文件的来源顺序是什么?我何时必须重新登录才能获得对新定义的变量,别名等的可见性?登录,交互式和非交互式Shell之间有什么区别-我使用cron
吗?为什么我做一个. ~/.bashrc
愚蠢的PATH
变量会越来越长?是我想到PATH
变量时想到的关键问题。实际上,我只是完全重写了我的整个bash启动文件集,并从Ubuntu和cygwin骨架文件中提取了一些想法。 ,这是我的一些站点:
导出
PATH
和其他全局环境变量(即LD_LIBRARY_PATH
)变量到.profile
中;如果存在; 对
~/.profile
进行防护以进行交互式执行测试,否则退出; 放置所有别名,
$HOME/.bashrc
,提示设置,历史记录控制,终端设置,功能定义等。 (交互式相关设置)在~/.bashrc
的仅受保护的部分以交互方式运行; 摆脱其他bash启动文件,因为它们的存在决定了通过
shopt
和~/.bashrc
的控制路径是否按预期工作。也就是说,除非有其他特殊要求,否则请删除.profile
和.bashrc
; 当我进入bash提示符时,需要更新一些默认设置时,请编辑
~/.bash_profile
文件,然后使用一个~/.bash_login
可以在我当前的shell中获得这些更改。在~/.bashrc
中冲煮特定设置。那是我在这个话题上的2美分。
#4 楼
问:什么是环境变量?A:环境变量类似于任何编程语言中的变量。对于Windows或Unix系统,它们存储各种值,以允许程序和任务获取必要的OS信息或“环境”信息。例如:
USERPROFILE:OS文件中的用户目录。
MAIL:在OS文件中可以找到用户邮件的位置。
问:PATH变量具体是什么?
A:PATH变量设置目录路径,以便在执行命令(包括RUN命令和程序内部调用)时查找。这样可以防止程序需要知道其安装位置来调用其他可执行进程。
它将查找Windows Environment System PATH变量,并测试给定可执行文件的每个位置。因此,将位置添加到PATH变量中可以直接调用可执行文件。
根据此Wikipedia文章:
在命令中输入命令时Shell或由程序进行系统调用以执行程序,系统首先搜索当前工作目录,然后搜索路径,从左到右检查每个目录
问:如何在PATH变量中添加位置??答:您需要编辑环境变量PATH变量的变量字符串以包含可执行文件的位置。
此处介绍了一种实现方法:
打开“开始”菜单,然后右键单击“计算机”。选择“属性”。
选择“高级”系统设置。
在“高级”选项卡中,选择“环境变量”。
选择“编辑”或“新建”。 (对于PATH,您很可能希望进行编辑)。
添加您的位置路径。例如:
C:\wamp\bin\php\php5.5.12;
我希望这可以澄清一些混淆。
#5 楼
Windows 10,没有管理员帐户控制面板->用户帐户->用户帐户->更改我的环境变量
请注意,您必须单击标题“用户帐户” :
再次,必须单击标题“用户帐户”:
评论
谢谢!可以显示Windows 8.1吗?
– Chris22
9月27日15:09
@ Chris22我的笔记本电脑中只有Win10,但我认为在Windows 8中它类似于Win10或Win7。
–拉夫
10月2日16:22
谢谢。我会试试看。
– Chris22
10月8日16:08
评论
厌倦了每次都需要手动执行的烦恼,我编写了一些注册表项,以使用名为pathed.exe的免费应用程序将AddToPath和RemoveFromPath的上下文菜单项添加到文件夹。以下是完整指南的链接:上瘾的提示.com / windows-tips /…现在,我可以非常轻松地将文件夹添加到PATH变量或从中删除它们,而无需编辑任何文件或担心弄乱变量的格式。希望能帮助到你。 =)在Windows上,有一个用于打开System属性的快捷方式。控制面板->系统这是键盘上的WIN键+暂停/中断(WIN + Break)。这非常有用,可以加快在Win8上设置新环境变量的过程,因为在那儿您必须单击现代ui中的几个窗口(是的。如果它是现代的,那么我会在手掌上种植一个仙人掌),这很烦人。当然,您可以创建powershell脚本或使用setx命令,而不必担心它:D
在Windows 8中,对变化中的系统和用户环境变量的最快导航是使用搜索。 Win + W 会显示所有设置的搜索。搜索env并列出所需的选项。
我认为通过打开CMD并键入set或PowerShell并键入Get-Childitem env:可以更快,更清晰地实现。
如果您要大量编辑路径变量(例如,在设置新系统时),则在桌面上具有指向“系统属性”对话框的快捷方式可能会有所帮助。为此,右键单击桌面,选择“新建快捷方式”,然后输入systempropertiesadvanced.exe。然后,您可以单击链接以进入“系统属性”对话框,然后单击“环境变量”以获取具有路径设置的对话框。