是否可以在$ PATH中添加单个可执行文件而不是整个目录?


9

我在OSX中安装了XAMPP,默认情况下,它会将其自身bin目录(充满各种实用程序)的路径添加到我的$PATH变量中:

# Add path to XAMPP PHP version
export XAMPP_PHP=/Applications/XAMPP/xamppfiles/bin
export PATH="$XAMPP_PHP:$PATH"

不幸的是HEAD,由于OSX不区分大小写的文件系统,其实用程序之一被调用,它与Unix head命令冲突。XAMPP HEAD完全无关head(我认为它发出HTTP HEAD请求)。

当然,我想同时使用headXAMPP和XAMPP,因此我只更改了路径变量的顺序:

export PATH="$PATH:$XAMPP_PHP"

这让我可以使用head,但是现在XAMPP的PHP版本(例如5.5)与OSX随附的预安装的PHP版本(5.3)之间存在冲突。由于到5.3的路径是第一位的,因此最终会优先。

我的解决方案计划是在XAMPP的PHP版本之前加上完整的文件路径和名称,然后在以下位置附加其余路径$PATH

export PATH="/Applications/XAMPP/xamppfiles/bin/php:$PATH:$XAMPP_PHP"

这似乎不起作用。当我重新启动bash并检查时php -v,它仍在PHP 5.3(内置版本)上。甚至可以添加一个特定的文件路径$PATH吗?


4
不可以,$PATH只能包含目录。您可以简单地将所需的特定可执行文件符号链接到的现有目录中$PATH
larsk's

Answers:


8

假设这echo "$PATH"显示/usr/local/bin在您的路径中,并且考虑到这是您的个人笔记本电脑,请执行以下操作:

/usr/local/bin指向您想要的可执行文件的位置创建一个符号链接。

ln -s /Applications/XAMPP/xamppfiles/bin/php /usr/local/bin/php

如果是共享计算机,并且您不想影响其他用户,建议您在中为PATH设置自定义扩展名~/.bash_profile。我自己一个:

$ grep PATH ~/.bash_profile 
export PATH="$PATH:$HOME/.bin"

然后,我可以将自定义符号链接,脚本等放入其中~/.bin,它们将按预期运行(不会覆盖我的PATH中先前存在的替代系统命令)。

我将放在.开头,.bin因此在Finder中浏览时不必查看目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.