关于
- 设置环境变量
- 这
PATH
在这里很常见,而且大多数情况下答案都很相似。将来如果能有一个好的问答就好了。
所以问题是:什么是环境变量(例如可执行文件PATH
)以及如何在主要操作系统上更改和使用它们?
一个好的答案应该包括对环境变量及其对操作系统的意义的简单解释PATH
,以及如何设置和读取它们的简单指南。
答案1
什么是环境变量?
环境变量保存与当前环境相关的值,例如操作系统或用户会话。
小路
最著名的一个是PATH
Windows、Linux 和 Mac OS X 上的。它指定了可执行程序*在计算机上的目录,这些程序可以在不了解和在命令行上输入文件完整路径的情况下启动。(或者在 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 的信息,请访问这里。
例如,输入calc
(.exe
能在 Windows 的命令行中输入以下命令(英语:省略)将启动 Windows 计算器。
* 您可以.exe
通过编辑以外的方式添加对文件扩展名的支持%PATHEXT%
。
其他
其他变量可能会告诉程序使用了什么类型的终端(TERM
在 Linux/Mac OS X 上),或者在 Windows 上,Windows 文件夹位于哪里(例如,%WINDIR%
是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
在运行对话框中。
右键单击“(我的)电脑”,然后单击“属性”,或者直接按+ Break。
- 在 XP 中单击
Advanced » Environment Variables
。 - 在 Vista+ 中单击
Advanced system settings » Environment Variables
。
- 在 XP 中单击
还有许多其他方法可以到达同一个地方,例如在开始菜单/屏幕搜索框中输入“环境变量”等等。
Windows 中的环境变量分为用户和机器/系统特定值。您可以在其中查看和编辑它们的值。启动时它们的当前值可供所有程序使用。
还有快速环境编辑器,它有助于在 Windows 中设置和更改环境变量,而无需深入系统设置。另一个可以非常方便地编辑路径环境的 Windows 开源程序是路径编辑器。
命令行
格式
Windows 中的环境变量用名称周围的百分号 (%) 表示:
%name%
回声
要在 中显示环境变量的值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 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
到 Vista 之前的 Windows 版本。
Windows XP Service Pack 2 支持工具
Windows 环境变量列表
这里是以下列表默认环境变量,它们是 Windows 内置的。一些示例为:
%WINDIR%
、、和。%SystemRoot%
与Windows 中的大多数名称一样,它们不区分大小写。%USERPROFILE%
%APPDATA%
Unix 衍生产品(FreeBSD、GNU / Linux、OS X)
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
C shell 及其后代使用完全不同的语法;在那里,命令是setenv
。
请参阅 Linux 文档项目,路径指南以便更深入地讨论这个话题。
也许与普遍看法相反,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:路径指南
答案2
这篇文章比丹尼尔的更从技术角度阐述,但并没有解释太多概念。
这维基百科文章也是一个很好的参考。
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
和其他 shell:参见适当的手册页。
图形登录:不确定;可能因登录管理器而异。GDM 似乎
~/.profile
在我的系统中读取。
打开终端窗口:
bash
用途/etc/bash.bashrc
和~/.bashrc
。
Windows NT 系列
在命令提示符 (
cmd.exe
) 中,使用set name=value
来更改该窗口的环境变量。要附加
c:\bin
到%PATH%
,请使用:set path=%path%;c:\bin
这只会影响该
cmd.exe
过程,并且任何新的从中启动的进程。要进行持久更改,使用控制面板 → 系统 → 高级 → 环境变量。 (文档)
笔记:虽然用户设置通常会覆盖系统设置,但
PATH
变量会被特殊处理:系统设置和用户设置都会合并到最终值中。更改将存储到注册表(见下文),并立即应用于所有新的由 Explorer(图形外壳)创建的进程,例如通过“开始”菜单。
系统范围的环境变量保存在注册表中,
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
并在系统启动时加载。HKCU\Environment
用户环境在用户登录时保存并加载。默认情况下,系统还会在文件中查找
set
命令。AUTOEXEC.NT
MS-DOS、16 位 Windows、Windows 9x 系列
在 MS-DOS 提示符 (
command.com
) 下,使用set name=value
,就像在 WinNT 中一样。类似地,
set
交互运行只会影响该一个command.com
实例以及从该实例启动的任何新进程。要使更改持久化,请
set
在中添加或编辑适当的行C:\AUTOEXEC.BAT
,然后重新启动。- 对于 Windows 9x,避免重新启动的解决方法:打开 MS-DOS 提示符窗口,设置适当的变量,关闭现有的 Explorer 进程(开始 → 关机→ 按住 Ctrl+Shift 键,点击取消),
explorer.exe
从 MS-DOS 提示符窗口运行。
- 对于 Windows 9x,避免重新启动的解决方法:打开 MS-DOS 提示符窗口,设置适当的变量,关闭现有的 Explorer 进程(开始 → 关机→ 按住 Ctrl+Shift 键,点击取消),
虚拟机管理系统
(无法抗拒。)
DCL没有“路径”的概念,但是可以放入各种符号和命令定义SYS$LOGIN:LOGIN.COM
。
答案3
问: 什么是环境变量?
A:环境变量与任何编程语言中的变量类似。在 Windows 或 Unix 系统中,它们存储各种值,以便程序和任务获取必要的操作系统信息或“环境”信息。例如:
USERPROFILE:操作系统文件中的用户目录。
MAIL :可以在 OS 文件中找到用户的邮件。
问:PATH 变量具体是什么?
A:PATH 变量设置执行命令时要查找的目录路径,既可用于 RUN 命令,也可用于程序的内部调用。这样可以防止程序需要知道其安装位置才能调用其他可执行进程。
它查看 Windows 环境系统 PATH 变量并测试给定可执行文件的每个位置。因此,将位置添加到 PATH 变量允许直接调用可执行文件。
根据这个维基百科文章:
当在命令 shell 中输入命令或程序进行系统调用来执行程序时,系统首先搜索当前工作目录,然后搜索路径,从左到右检查每个目录
问:如何将位置添加到 PATH 变量?
A:您需要编辑环境变量 PATH 变量的变量字符串以包含可执行文件的位置。
描述了一种实现此目的的方法这里:
- 打开“开始”菜单,右键单击“计算机”。选择“属性”。
- 选择高级系统设置。
- 在高级选项卡中,选择环境变量。
- 选择编辑 (EDIT) 或新建 (NEW)。(对于路径 (PATH),您最有可能想要编辑)。
- 添加您的位置路径。例如:
C:\wamp\bin\php\php5.5.12;
我希望这可以澄清一些困惑。