我可以在 Powershell 的 PATH 中包含一个相对于当前目录的文件夹吗?
Can I include a folder relative to the current directory in PATH in Powershell?
我 运行 很多节点项目,通常有二进制文件位于:
.\node_modules\.bin
...相对于项目文件夹。我希望 PATH
始终包含这些目录(如果存在)。我不想包含其他目录,只包含与当前目录相关的目录。我熟悉
Add-PathVariable
来自 PSCX 和其他 Powershell 基础知识,但是 如何在 PATH 中包含相对于当前目录的文件夹?
编辑:如问题中所述,我希望路径随着目录的变化而保持更新。这不是简单地询问如何使用 pwd
.
您可以在Env:PATH中使用相对路径,找到的二进制文件将动态更新:
例如:
$env:PATH += ';.\node_modules\.bin'
或使用 PowerShell Community Extensions (PSCX):
Add-PathVariable '.\node_modules\.bin'
与使用 $(pwd)
不同,.
不会立即解析为绝对路径,因此 PATH
始终相对于当前工作目录。
测试这个:
$ 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')
安全说明:输入命令时Windows将自动在$env:PATH
中的所有目录中搜索具有[=21]中列出的扩展名之一的文件=] 并执行它找到的第一个匹配项。根据您放置 .
的搜索路径中的确切位置,它甚至可能会取代系统可执行文件。
您可能想查看 how to use package installed locally in node_modules 以了解替代方法。
我 运行 很多节点项目,通常有二进制文件位于:
.\node_modules\.bin
...相对于项目文件夹。我希望 PATH
始终包含这些目录(如果存在)。我不想包含其他目录,只包含与当前目录相关的目录。我熟悉
Add-PathVariable
来自 PSCX 和其他 Powershell 基础知识,但是 如何在 PATH 中包含相对于当前目录的文件夹?
编辑:如问题中所述,我希望路径随着目录的变化而保持更新。这不是简单地询问如何使用 pwd
.
您可以在Env:PATH中使用相对路径,找到的二进制文件将动态更新:
例如:
$env:PATH += ';.\node_modules\.bin'
或使用 PowerShell Community Extensions (PSCX):
Add-PathVariable '.\node_modules\.bin'
与使用 $(pwd)
不同,.
不会立即解析为绝对路径,因此 PATH
始终相对于当前工作目录。
测试这个:
$ 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')
安全说明:输入命令时Windows将自动在$env:PATH
中的所有目录中搜索具有[=21]中列出的扩展名之一的文件=] 并执行它找到的第一个匹配项。根据您放置 .
的搜索路径中的确切位置,它甚至可能会取代系统可执行文件。
您可能想查看 how to use package installed locally in node_modules 以了解替代方法。