在我的文件夹中,我$PATH
有~/.zsh/bin
一个用于小型脚本和自定义构建的可执行二进制文件的文件夹,例如,我添加了一个最近编译的工具,我称之为wercker_build_status
该文件夹。然而,当我在命令行中输入时,wercker_build_status
它找不到它,我必须输入文件的完整路径,~/.zsh/bin/wercker_build_status
.
这并不是说文件夹中的任何内容都不起作用,我调用的脚本wifi_status
就在其中,将其输入到命令行中会按预期返回 wifi 状态。
为什么即使它在我的文件夹中$PATH
,我也不能只使用添加到文件夹中的文件~/.zsh/bin
?
答案1
$HOME
在路径中使用波浪符号 ( ~
),尤其是当您将新内容括PATH
在双引号中时。波浪符号出现在引号中时不会展开。
测试:
$ mkdir "$HOME/t"
$ cat >"$HOME/t/foo" <<END
#!/bin/sh
echo "hello"
END
$ chmod +x "$HOME/t/foo"
$ PATH="$PATH:~/t"
$ foo
zsh: command not found: foo
$ PATH="$PATH:$HOME/t"
$ foo
hello
也可以看看:为什么波形符 (~) 不在双引号内展开?