我刚刚通过 MacPorts 安装了 Apache。看来我的 Mac 完全搞不清楚应该运行哪个版本的 Apache 可执行文件。
将 Mac 附带的 Apache 可执行文件移动到变量中未列出的目录后PATH
,尝试运行httpd
由 MacPorts 构建的程序会失败,即使变量/opt/local/apache2/bin
中列出了正确的目录 () PATH
。
如果我导航到目录/opt/local/apache2/bin
并输入命令,httpd
我仍然会收到错误消息
-bash:httpd:未找到命令
如果我输入带有完整路径的命令,/opt/local/apache2/bin/httpd
它可以正常工作。
我已经运行命令alias
来查看是否发生了冲突,但唯一列出的是:
alias wget='curl -O'
即使我在同一个目录中,我如何找到拦截命令并阻止在目录中找到可执行文件的内容?
顺便说一下,该httpd
文件是可执行的:
-rwxr-xr-x 1 root admin 442496 9 May 2012 httpd
答案1
很简单。当前目录永远不会属于PATH
。因此,即使您在 内/opt/local/apache2/bin
,您也不能简单地键入,httpd
因为 Bash 只会在您的 中查找PATH
。
因此,您必须./httpd
在这里输入。
要让 Bash 在 MacPorts Apache 目录中查找可执行文件,请将以下内容添加到~/.bash_profile
:
export PATH=/opt/local/apache2/bin:$PATH
这还将导致该目录中的二进制文件优先于稍后出现的任何其他具有相同名称的二进制文件——PATH
请使用 进行检查which -a httpd
。