slh*_*hck 385 path environment-variables community-faq
关于的问题
PATH
在这里很常见,而且在大多数情况下,答案彼此非常相似。将来有一个很好的 Q/A 会很好。
所以问题是:什么是环境变量,例如可执行文件PATH
,以及如何在主要操作系统上更改和使用它们?
一个好的答案将包括对环境变量的简单解释,特别PATH
是对操作系统的意义,以及如何相应地设置和读取它们的简单指南。
Dan*_*eck 372
环境变量保存与当前环境相关的值,如操作系统或用户会话。
最著名的一种是PATH
在 Windows、Linux 和 Mac OS X 上调用。它指定可执行程序*位于机器上的目录,无需知道并在命令行上键入文件的整个路径即可启动. (或在 Windows 中,开始菜单中的运行对话框或+ R)。
在 Linux 和 Mac OS X 上,它通常包含bin
与sbin
当前用户相关的所有目录。在 Windows 上,它至少包含C:\Windows
和C:\Windows\system32
目录——这就是为什么您可以从命令行或运行对话框运行 calc.exe
或,但不能运行. (Firefox 位于。有关如何包含 Firefox 的信息,请转到此处。)notepad.exe
firefox.exe
C:\Program Files\Mozilla Firefox
例如,在 Windows 的命令行中键入calc
(.exe
可以省略)将启动 Windows 计算器。
* 您可以添加对文件扩展名的支持,而不是.exe
通过编辑%PATHEXT%
.
其他变量可能会告诉程序使用哪种终端(TERM
在 Linux/Mac OS X 上),或者在 Windows 上,Windows 文件夹所在的位置(例如,%WINDIR%
is C:\Windows
)。
在 Windows、Linux 和 Unix 中,可以创建新的环境变量,然后在启动时将其值提供给所有程序。
在编写安装或部署到多台机器并需要引用特定于这些机器的值的脚本或程序时,您可以使用它。虽然使用特定于程序的配置设置可以实现类似的效果,但如果多个程序需要访问相同的值,使用环境变量更容易做到这一点。
打开Control Panel » System » Advanced » Environment Variables
。
control sysdm.cpl,,3
在“运行”对话框 ( + R) 中键入,然后单击
Environment Variables
。
要编辑用户变量,您还可以键入
%windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
Run Code Online (Sandbox Code Playgroud)
在运行对话框中。
右键单击(我的)电脑并单击属性,或只需按+ Break。
Advanced » Environment Variables
。 Advanced system settings » Environment Variables
。还有许多其他方法可以到达同一位置,例如在“开始”菜单/屏幕搜索框中键入“环境变量”等。
Windows 中的环境变量分为用户和机器/系统特定值。您可以在那里查看和编辑它们的值。它们在启动时的当前值可用于所有程序。
还有快速环境编辑器,它有助于在 Windows 中设置和更改环境变量,而无需深入系统设置。另一个可以非常方便地编辑路径环境的 Windows 开源程序是路径编辑器。
Windows 中的环境变量在名称周围用百分号 (%) 表示:
%name%
Run Code Online (Sandbox Code Playgroud)
要在 中显示环境变量的值cmd.exe
,请键入echo %name%
。
C:\>echo %USERPROFILE%
C:\Users\Daniel
Run Code Online (Sandbox Code Playgroud)
要创建/设置变量,请使用set varname=value
:
C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures
C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2
Run Code Online (Sandbox Code Playgroud)
要追加/添加变量,请使用set varname=value;%varname%
:
C:\>set Penguins=C:\Linux
C:\>set Penguins=C:\Windows;%Penguins%
C:\>echo %Penguins%
C:\Windows;C:\Linux
Run Code Online (Sandbox Code Playgroud)
以这种方式设置的环境变量在设置它们的命令提示符进程的(其余)持续时间内可用,并且可用于设置变量后启动的进程。
要永久创建/设置变量,请使用: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
Run Code Online (Sandbox Code Playgroud)
与 不同set
,没有等号,如果值包含任何空格,则应将其括在引号中。请注意,变量可能会扩展为带有空格的字符串(例如,%PATH%
变成C:\Program Files
),因此最好在包含任何变量的值周围加上引号。
您必须手动添加setx
到早于 Vista 的 Windows 版本。
Windows XP Service Pack 2 支持工具
这是Windows 内置的默认环境变量列表。一些例子是:
%WINDIR%
,%SystemRoot%
,%USERPROFILE%
,和%APPDATA%
。与 Windows 中的大多数名称一样,这些名称不区分大小写。
Linux 中的环境变量以美元符号 ($) 为前缀,例如 $HOME 或 $HOSTNAME。许多众所周知的标准变量都用大写字母拼出以表示这一点。请记住,变量名区分大小写,这意味着从 shell 的角度来看,$User 和 $USER 完全无关。
Unix 衍生品在主要位于/etc
文件夹中的 shell 脚本中定义系统范围的变量,但可以将用户特定的值赋予位于主文件夹中的脚本中的那些变量(例如,/etc/profile
, $HOME/.bash_profile
)。将.profile
在主文件夹文件是定义用户变量一个共同的地方。
设置变量
这些文件是常规的 shell 脚本,可以包含的不仅仅是环境变量声明。要设置环境变量,请使用export
. 要在终端中显示当前定义的环境变量,请运行env
.
该export
命令是定义变量的标准方法。语法非常直观。这两行的结果是相同的,但如果需要可移植到 pre-POSIX Bourne shell,则首选第一种选择。
var=value; export var
export var=value
Run Code Online (Sandbox Code Playgroud)
C shell 及其后代使用完全不同的语法;在那里,命令是setenv
。
有关此主题的更深入讨论,请参阅 Linux 文档项目Path HOWTO。
也许与普遍看法相反,OS X 比 Linux 更“Unix”。除了已经提到的文件之外,还可以在这些文件中修改 $PATH:
/etc/paths
包含添加到路径的所有默认目录,如/bin
和/usr/sbin
。/etc/paths.d
安装程序通常使用的任何文件,以便在不涉及系统范围或用户特定的配置文件的情况下从 shell 提供他们提供的可执行文件。这些文件每行只包含一个路径。例如,/Programs/Mozilla/Calendar/bin。
XP 中的环境变量
Windows XP Service Pack 2 支持工具(包括setx
)
Windows Vista 和 Windows 7 中的环境变量
将可执行文件添加到运行对话框
Mac OSX 提示 - 设置环境变量
TLDP:路径方法
use*_*686 75
这篇文章是从比 Daniel 的更具技术性的角度出发的,但并没有解释那么多的概念。
在维基百科的文章也是一个很好的referrence。
在大多数命令行 shell 中,临时环境变量是使用export
(sh, bash, zsh) 或setenv
(csh, tcsh) 命令设置的。
对于前面加上例子$HOME/bin
,以$PATH
在bash或zsh中:
export PATH="$HOME/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)
(在这种特殊情况下,export
是不必要的,因为PATH
它已经是环境的一部分。)
csh, tcsh:
setenv PATH "$HOME/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)可以在几个单独的阶段设置持久性环境变量:
登录:
登录会话设置: 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
。在命令提示符 ( cmd.exe
) 中,用于set name=value
更改该窗口的环境变量。
要附加c:\bin
到%PATH%
,请使用:
set path=%path%;c:\bin
Run Code Online (Sandbox Code Playgroud)
这只会影响该cmd.exe
进程,以及从它启动的任何新进程。
要进行持久更改,请使用控制面板?系统 ?先进的 ?环境变量。(文档)
注意:虽然用户设置通常会覆盖系统设置,但PATH
变量被特殊处理:系统和用户设置都合并到最终值中。
更改存储到注册表(见下文),并立即应用于由资源管理器(图形外壳)创建的所有新进程,例如,通过“开始”菜单。
系统范围的环境变量保存在注册表中HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
,并在系统启动时加载。
用户环境HKCU\Environment
在用户登录期间保持并加载。
默认情况下,系统还会set
在AUTOEXEC.NT
文件中查找命令。
在 MS-DOS 提示符 ( command.com
) 中,使用set name=value
,就像在 WinNT 中一样。
同样,以set
交互方式运行只会影响那个command.com
实例,以及从它启动的任何新进程。
要进行持久更改,请在 中添加或编辑适当的set
行C:\AUTOEXEC.BAT
,然后重新启动。
explorer.exe
从 MS-DOS 提示窗口运行.(无法抗拒。)
DCL 没有“路径”的概念,但是可以放入各种符号和命令定义SYS$LOGIN:LOGIN.COM
。
Pau*_*l V 11
问: 什么是环境变量?
答:环境变量类似于任何编程语言中的变量。在 Windows 或 Unix 系统的情况下,它们存储各种值以允许程序和任务获取必要的操作系统信息或“环境”信息。例如:
USERPROFILE :操作系统文件中的用户目录。
MAIL :可以在 OS 文件中找到用户邮件的位置。
问:PATH 变量具体是什么?
答: PATH 变量设置了在执行命令时要查找的目录路径,包括 RUN 命令和程序的内部调用。这可以防止程序需要知道其安装位置来调用其他可执行进程。
它查看 Windows 环境系统 PATH 变量并测试给定可执行文件的每个位置。因此,向 PATH 变量添加位置允许直接调用可执行文件。
根据这篇维基百科文章:
当在命令shell中输入命令或程序进行系统调用以执行程序时,系统首先搜索当前工作目录,然后搜索路径,从左到右检查每个目录
问:如何向 PATH 变量添加位置?
答:您需要编辑环境变量 PATH 变量的变量字符串以包含可执行文件的位置。
C:\wamp\bin\php\php5.5.12;
我希望这能澄清一些困惑。
Bil*_*key 10
对于bash
shellPATH
全局(非终端)环境变量,我遵循我的 Ubuntu VM 安装中使用的约定——其他 shell 会有所不同:
警告:整个 shell 启动顺序,哪个.bashrc
,.profile
等文件的来源顺序是什么?,我什么时候必须重新登录才能看到新定义的变量、别名等?,登录之间有什么区别、交互式和非交互式 shell - 我确实使用cron
?,为什么当我使用 a 时. ~/.bashrc
,我的愚蠢PATH
变量会变得越来越长?是我在考虑PATH
变量时想到的关键问题。
事实上,我只是从 Ubuntu 和 cygwin 框架文件中汲取灵感,完全重新编写了我的整个 bash 启动文件集,以下是我的一些站点:
PATH
和其他全局环境变量(即LD_LIBRARY_PATH
)变量.profile
。~/.profile
来获取$HOME/.bashrc
;~/.bashrc
与测试交互执行,否则退出;shopt
's、提示设置、历史控制、终端设置、函数定义等(交互相关的设置)放在~/.bashrc
被保护的部分,只在交互模式下运行;.profile
并按.bashrc
预期工作。也就是说,除非有特殊要求,否则删除~/.bash_profile
& ~/.bash_login
;~/.bashrc
文件,然后简单地使用 a. ~/.bashrc
获取它以在我当前的 shell 中获取这些更改。PATH
,我需要修改并获取我的~/.profile
;.profile
.这是我在这个主题上的 2 美分。
控制面板 -> 用户帐户 -> 用户帐户 -> 更改我的环境变量
归档时间: |
|
查看次数: |
882453 次 |
最近记录: |