我在 Windows 10 计算机上运行 cygwin。如果我从 cygwin 命令窗口执行 $PATH,则会出现以下错误:
$ $PATH
-bash: /usr/local/bin:/usr/bin:/cygdrive/c/Program: No such file or directory
我怀疑错误与尝试创建 或 有关Program Files
。Program Files (x86)
我熟悉在\
Cygwin 上输入 Windows 路径名时在空格前加上 的必要性。但是,我检查了我的.bashrc
文件,没有 的条目Program Files
。我认为 Cygwin 安装一定自动创建了此路径条目,但不知何故它被损坏了。任何建议都将不胜感激。
答案1
是$PATH
一个变量,其中包含一个以冒号分隔的目录(文件夹)列表,用于搜索要执行的命令。例如,如果您输入并且得到成功的结果,则表示在*ls
中列出的目录之一中找到了该命令。$PATH
这是我的一段$PATH
,使用echo
命令显示它
echo "$PATH"
/cygdrive/C/Users/roaima/OneDrive - Contoso/Documents/bin:/usr/local/my/bin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/WINDOWS/System32/WindowsPowerShell/v1.0:/cygdrive/c/WINDOWS/System32/OpenSSH:/cygdrive/c/Local/bin:/cygdrive/c/Local/Apps/yt-dlp_win:/cygdrive/c/Program Files/Amazon Corretto/jdk1.8.0_222/bin:…:/cygdrive/c/Users/roaima/AppData/Local/Microsoft/WindowsApps:/cygdrive/c/Program Files (x86)/Nmap:/cygdrive/c/Users/roaima/.dotnet/tools:/cygdrive/c/Program Files/SMPlayer/mpv:/cygdrive/c/Program Files/SMPlayer/mplayer:/cygdrive/c/Program Files (x86)/Sophos/Sophos SSL VPN Client/bin
即使从中间删除了一大块( ),它仍然是一个很长的列表。您可以使用并让它每行输出一个元素来…
稍微整理一下:printf
( IFS=:; printf "%s\n" $PATH )
/cygdrive/C/Users/roaima/OneDrive - Contoso/Documents/bin
/usr/local/my/bin
/usr/local/bin
/usr/sbin
/sbin
/usr/bin
/cygdrive/c/WINDOWS/system32
…
现在,解释一下当您尝试执行 时发生了什么$PATH
。shell 在空白处分割行,查找要执行的第一部分,其余项作为该命令的参数。在我的例子中,第一个空格就在单词后面,OneDrive
所以我的“命令”将是/cygdrive/C/Users/roaima/OneDrive
,这不是可以执行的命令:
$PATH
-bash: /cygdrive/C/Users/roaima/OneDrive: Is a directory
结论?不要尝试执行$PATH
- 这不是要执行的命令。
下一部分。你写道,“我熟悉在 Cygwin 上输入 Windows 路径名时在空格前加上 \ 的必要性“-如果命令位于列出的目录中,$PATH
您可以按名称运行它们,而无需指定目录。例如,我可以直接运行notepad
,它就可以正常工作。您还可以引用包含空格的字符串,因此
'/cygdrive/c/local programs/notepad++' myfile.txt
但如果该目录在我的目录中,$PATH
我也可以运行这个:
notepad++ myfile.txt
* 或者它是一个别名或一个函数,但现在我们先忽略它们
答案2
了解它$PATH
是什么以及如何“使用”它......
$ man bash
将显示 Bash 的手册页...
启动后您就可以less
运行它,即点击h将告诉您按什么键可以获得某些功能 - q退出帮助。
/将启动(正则表达式)搜索,这意味着输入
/^ +PATH
Enter将查找标题$PATH
- 以便您了解情况。
更远,tdlp.org有两个Bash guides
- 虽然有些旧了,但它们仍然实用且非常有用。