环境变量是Linux,Mac或Windows计算机的全局设置,存储为系统外壳程序在执行命令时使用。 许多是在安装或用户创建期间默认设置的。

例如,登录时将主目录设置为环境变量。在PowerShell中的外观取决于您的操作系统。

在Windows上:

PS C:\Users\bogus> Get-Variable HOME -valueOnly
C:\Users\bogus

在Linux上:

pwsh> Get-Variable HOME -valueOnly
HOME=/home/seth

在Mac上:

pwsh> Get-Variable HOME -valueOnly
HOME=/Users/bogus

通常,您不直接使用环境变量,而是根据需要由各个应用程序和守护程序引用它们。 但是,当您要覆盖默认设置或需要管理系统没有理由自行创建的新设置时,环境变量可能会很有用。

本文是关于开源PowerShell环境中的环境变量的,因此它适用于在Windows,Linux和Mac上运行的PowerShell。 Bash shell的用户应该在Bash环境变量中参考我的文章。

对于本文,我在开源操作系统Linux上运行PowerShell。 尽管输出会有所不同,但无论平台如何,命令都是相同的(例如,统计上您的用户名为seth不太可能)。

什么是环境变量?

在PowerShell中,环境变量存储在Env: “驱动器”中,可通过PowerShell环境提供程序 (PowerShell的子系统)进行访问。 这不是物理驱动器,而是虚拟文件系统。

由于环境变量在信封存在当你引用它们的变量名驱动器,你必须在前面加上信封 。 另外,您可以使用Set-Location命令将工作位置设置为Env:驱动器,以便将所有环境变量都视为本地变量:

PS> Set-Location Env:
PS> pwd

Path
----
Env:/


环境变量将有关登录会话的信息传达给计算机。 例如,当应用程序需要确定默认情况下将数据文件保存在何处时,通常会调用HOME环境变量。 您可能永远不会自己设置HOME变量,但是它存在是因为大多数环境变量是由操作系统管理的。

您可以使用Env:驱动器中的Get-ChildItem命令查看系统上设置的所有环境变量。 该列表很长,因此请通过out-host -paging将输出通过管道传递 ,以使其易于阅读:

PS> Get-ChildItem | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles
MODULESHOME  /usr/share/Modules
OLDPWD       /home/seth
PATH         /opt/microsoft/powershell/6:/usr/share/Modules/bin
PSModulePath /home/seth/.local/share/powershell/Modules
PWD          /home/seth
[...]

如果您不在Env:驱动器中,则可以通过将Env:添加到命令中来执行相同的操作:

PS> Get-ChildItem Env: | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles

可以使用与普通变量相同的语法来设置,调用和清除环境变量。 与其他变量一样,您在会话期间设置的任何内容仅适用于该特定会话。

如果要永久更改变量,则必须在Windows的Windows注册表中或Linux或Mac的外壳程序配置文件(例如〜/ .bashrc )中进行更改。 如果您不熟悉在PowerShell中使用变量,请先阅读PowerShell中的变量,然后再继续。

什么是环境变量?

计算机中的多个不同系统会使用不同的环境变量。 例如,您的PATH变量对您的Shell至关重要,但对Java(它也有路径,但它们是重要的Java库的路径而不是常规系统文件夹的路径)的重要性要小得多。 但是, USER变量由几个不同的进程使用,以标识谁在请求服务。

在安装新应用程序时,安装程​​序向导(如开源Nullsoft可脚本安装系统(NSIS)框架)会更新环境变量。 有时,当您在操作系统预期的工具集之外安装某些软件时,可能必须自己管理环境变量。 或者,您可以选择添加一个环境变量以适合您的首选项。

它们与常规变量有何不同?

创建普通变量时,该变量被视为局部变量,这意味着未在创建它的外壳之外定义它。

例如,创建一个变量:

PS> Set-Variable -Name VAR -Value "example"
PS> gv VAR -valueOnly
example

即使在您当前的shell中启动一个新的shell:

PS> pwsh
PS c:\> gv VAR -valueOnly
gv : Cannot find a variable with the name 'example'.

另一方面,环境变量的作用域是全局的。 它们与创建它们的外壳分开存在,并且可用于其他进程。

如何设置环境变量?

设置环境变量时,应使用$ Env:表示法明确表明它是环境变量:

PS Env:/> $Env:FOO = "hello world"
PS Env:/> Get-ChildItem FOO
hello world

作为测试,启动一个新的会话并访问您刚创建的变量。 由于该变量是环境变量,因此必须在其前面加上$ Env ::

PS Env:/> pwsh
PS c:\> $Env.FOO
hello world

即使您为子进程提供了一个变量,它仍然只是一个临时变量。 它可以工作,您可以验证它是否存在,可以在任何进程中使用它,但是当关闭创建它的外壳时,它会被销毁。

您如何在配置文件中设置环境变量?

要强制环境变量在所有会话中持久存在,必须将其添加到PowerShell配置文件中,例如HOME / Documents / Profile.ps1中的 CurrentUser,AllHosts配置文件

PS> Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:FOO = "hello world"'

添加此行后,任何启动的PowerShell会话都会实例化FOO环境变量并将其值设置为hello world

当前有六个默认配置文件控制PowerShell会话,因此,请参阅Microsoft开发博客以获取更多信息。

您如何发现新的环境变量?

您可以随意创建和操作环境变量,某些应用程序就是这样做的。 这个事实意味着大多数应用程序都不会使用许多环境变量,并且如果您添加自己的任意变量,那么有些根本就不会使用。

所以问题是:如何找出哪些环境变量有意义? 答案在于应用程序的文档。

例如,Python提供了在安装过程中向您的Path环境变量添加适当的Python路径的功能。 [注意:PATH?]如果您拒绝使用,则现在您可以自行设置该值,因为您知道如何修改环境变量。

对于您安装的任何应用程序都是如此:安装程序应将适当的变量添加到您的环境中,因此您永远不需要手动修改Env:。 如果要开发应用程序,则安装程序应为用户执行相同的操作。

要发现各个应用程序的重要变量,请参考其用户和开发人员文档。

翻译自: https://opensource.com/article/19/9/environment-variables-powershell

PowerShell中的环境变量相关推荐

  1. 在PowerShell中查看环境变量Path

    在CMD中查看环境变量Path 在CMD中查看环境变量Path非常简单,只用输入path即可. C:\Users\Administrator>path PATH=C:\Program Files ...

  2. 中修改环境变量_系统小技巧:彻底弄懂Windows 10环境变量

    每当我们进行系统清理时,清理软件总能自动找到Windows的临时文件夹之所在,然后加以清理,即便是我们重定向了TEMP目录也是如此.究其原因,是因为清理软件会根据TEMP环境变量来判断现有临时文件夹的 ...

  3. Windows中的环境变量一览

    环境变量是操作系统中一组具有名称的值,能够影响应用程序的执行效果.环境变量是应用程序的执行环境的组成部分,例如:一个正在运行的程序可以通过"TEMP"这个环境变量来获取操作系统中用 ...

  4. 读取Node.js中的环境变量

    有没有办法在Node.js代码中读取环境变量? 例如,例如Python的os.environ['HOME'] . #1楼 如果要使用在Node.js程序中生成的字符串键(例如var v = 'HOME ...

  5. 在docker镜像中加入环境变量

    原文链接 前言 reference:https://vsupalov.com/docker-build-time-env-values/ 很多时候,我们需要在docker镜像中加入环境变量,本人了解的 ...

  6. Windows 中的环境变量 Path 与 XXXX_HOME 的区别

    Windows 中的环境变量 Path 与 XXXX_HOME 的区别 XXXX_HOME Path   开发经常需要配置 Windows 中的环境变量,其中经常需要配置的环境变量有 Path.XXX ...

  7. Ubuntu中设置环境变量PATH

    Ubuntu中设置环境变量PATH二种方法 时间:2008-11-06 00:00 来源:网管之家bitsCN.com 字体:[大 中 小] 目前在Ubuntu中有二种设置PATH环境变量的方法. 为 ...

  8. bootargs中的环境变量说明和一些常用的uboot命令

    bootargs中的环境变量说明和一些常用的uboot命令 一些常见的uboot命令: Help [command]在屏幕上打印命令的说明 Boom [addr]启动在内存储器的内核 Tftpboot ...

  9. linux系统中变量,Linux系统中的环境变量知识详解

    对于没有使用过linux系统的用户来说,有很多术语和功能都很陌生.本文就介绍了linux系统中的环境变量的相关知识,具体内容如下所述. linux是一个多用户的操作系统.每个用户登录系统后,都会有一个 ...

最新文章

  1. 《预训练周刊》第21期:FlipDA:有效且稳健的数据增强小样本学习、开放域低资源适应的生成式聊天机器人...
  2. Android之Butterknife原理解析
  3. java进入下一个_在进入下一个循环迭代之前执行setTImeout操作
  4. Retrofit2.0 请求数据 一直出返回网络错误,错误代码 414
  5. 开关设备对于数据中心正常运行时间很重要!
  6. Py之pandas:对dataframe型数据排序相关的问题总结之按照多个字段的多个条件进行排序(先打乱再排序)
  7. oracle解除死锁
  8. 方法中的参数,形参(形式参数)和实参(实际参数)简述
  9. 腾讯招视频内容理解算法研究员/高级研究员30W-60W
  10. Sencha Touch 给 Panel 注册点击事件(tap)和其他touchstart,touchend 等事件
  11. a4如何打印双面小册子_怎样将十几几十页的长文件文档打印成A4纸对折的小册子?...
  12. LAMP架构调优(四)——资源压缩传输
  13. ViewPager判断是向左划还是右划
  14. 台达伺服控制器接线图_伺服电机如何接线图
  15. 解决从PDF复制出来的文字总是换行的小技巧
  16. ppt模板免费下载的网站有哪些?这个宝藏网站必须make
  17. Swift学习之--TableView的基本使用
  18. 软件测试面试题:优惠券发布后测试场景图和设计?
  19. orcad capture学习笔记---3.DRC规则设置及检查
  20. 中通快递2019年第三季度营收同比增长24.4%至52.66亿元

热门文章

  1. 【跃迁之路】【429天】程序员高效学习方法论探索系列(实验阶段186-2018.04.10)...
  2. 转jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用
  3. 2015年度“最佳技术团队”和“最佳CTO”评选活动火热进行中
  4. Centos 5 手动安装yum
  5. 如何查看和转移 Windows Server 2003 中的 FSMO 角色
  6. Skype For Asterisk 的安装及使用
  7. 方便好用的Database Mail - SQL2005
  8. xaml 的 intellisense失效的解决办法
  9. stella forum v1.2 的初始设计模型
  10. 事务学习总结(2)——spring事务