编辑:我在 Windows 10 上,我认为该which
命令可用是因为安装了适用于 Windows 的 Git。
如果我which nvm
在 PowerShell 中输入,则会得到/c/Users/HP/AppData/Roaming/nvm/nvm
。 如果然后我想导航到该位置,/cd c/Users/HP/AppData/Roaming/nvm/nvm
则会失败,因为找不到路径。
cd
请问我怎样才能获得可以使用的路径?
答案1
既然您正在使用 PowerShell,那么为什么不使用 PowerShell?
PowerShell 中which
or的等价命令是。这将返回一个对象。例如:where.exe
Get-Command
Get-Command ping
输出:
CommandType Name Version Source
----------- ---- ------- ------
Application PING.EXE 10.0.18... C:\Windows\system32\PING.EXE
当您寻找路径时,您需要以下Path
属性:
(Get-Command ping).Path
输出:
C:\Windows\system32\PING.EXE
这至少是一条路径,Windows 会理解。但您无法将工作目录更改为它,因为它不是目录,而是可执行文件。您可以再次使用一些 PowerShell 魔法并提取可执行文件的父路径:
Split-Path (Get-Command ping).Path
输出:
C:\Windows\system32
然后,您可以使用此路径更改工作目录。顺便说一句,cd
在 PowerShell 中有一个别名,Set-Location
您可以使用 进行验证Get-Command cd
。总之,您可以将结果通过管道传输到cd
或 ,Set-Location
并在一行中获得所需的解决方案(提示未剥离以查看结果):
PS C:\> Split-Path (Get-Command ping).Path | cd
PS C:\Windows\system32>
答案2
我认为该
which
命令可用是因为安装了适用于 Windows 的 Git。
正如评论中提到的,Windows 版 Git 使用的路径格式与 PowerShell(或广义上的 Windows)不同。which
您使用的命令显然返回了要在 Git Bash 中使用的路径。
特别值得注意的是:
PowerShell 和 Windows 通常不使用正斜杠 (
/
) 作为路径分隔符。相反,反斜杠\
是本机使用的。驱动器号未指定为
/drive/
。它们被指定为drive:\
。
考虑到这一点,等效路径为:
/c/Users/HP/AppData/Roaming/nvm/nvm
在 PowerShell 中为:
c:\Users\HP\AppData\Roaming\nvm\nvm.ext
请注意,ext.
在这种情况下, 只是表示通用扩展名(可能是.exe
)。此外,/cd
可能无效,最后一个nvm
可能是可执行文件本身(减去扩展名 ie,无论什么ext
)。因此,您只需使用 ie:
cd c:\Users\HP\AppData\Roaming\nvm
cd
请问我怎样才能获得可以使用的路径?
正如其他地方多次提到的那样,where
在cmd
(普通命令窗口)和where.exe
(在 PowerShell 中)将返回 Windows 的正确格式路径,例如c:\Users\HP\AppData\Roaming\nvm\nvm.ext
上面(因此where nvm
在cmd
或where.exe nvm
在 PowerShell 中)。只需删除最终的可执行文件名称即可。