我可以在Powershell的PATH中包含一个相对于当前目录的文件夹吗?
我运行了大量的节点项目,并且通常有二进制文件位于:
.\node_modules\.bin
…相对于项目文件夹。 我希望能够让PATH
总是包含这些目录,如果它们存在的话。 我不想包含其他目录,只是相对于当前目录的目录。 我熟悉PSCX和其他Powershell基础知识中的Add-PathVariable
,但是如何在PATH中包含一个相对于当前目录的文件夹?
编辑 :正如问题中所提到的, 我希望path保持更新为目录更改 。 这不是简单地问如何使用pwd
。
您可以在Env:PATH中使用相对path,find的二进制文件将会dynamic更新 :
例如:
$env:PATH += ';.\node_modules\.bin'
或者使用PowerShell社区扩展 (PSCX):
Add-PathVariable '.\node_modules\.bin'
与使用$(pwd)
是.
没有立即parsing为绝对path,所以PATH
总是相对于当前工作目录。
testing这个:
$ which uuid C:\Users\username\Documents\myapp\node_modules\.bin\uuid.cmd
然后改变目录,uuid现在引用一个不同目录中的程序:
$ cd ..\blog\ $ which uuid C:\Users\username\Documents\blog\node_modules\.bin\uuid.cmd
也可以在用户或系统环境中持久地更改PATH
:
[Environment]::SetEnvironmentVariable(($env:PATH + ';.'), 'User')
要么
[Environment]::SetEnvironmentVariable(($env:PATH + ';.'), 'Machine')
安全提示 :input命令时,Windows将自动search$env:PATH
所有目录,查找具有$env:PATHEXT
列出的扩展名之一的文件,并执行find的第一个匹配项。 取决于您放置的searchpath的确切位置.
甚至可能取代系统可执行文件。
您可能需要查看如何使用node_modules本地安装的软件包来提供替代方法。