【问题标题】:Fish Shell - How to set a variable path in PATHFish Shell - 如何在 PATH 中设置变量路径
【发布时间】:2015-10-26 03:52:00
【问题描述】:

我想更新我的 fish shell 以使用 MAMP 的当前版本的 php(当前正在使用哪个版本)。

我找到了一篇关于如何在 bash 中做到这一点的优秀文章,但我似乎无法弄清楚如何在 fish 中实现这一点?

文章为:How to override the path of PHP to use the MAMP path?

具体来说:

# Use MAMP version of PHP
PHP_VERSION=`ls /Applications/MAMP/bin/php/ | sort -n | tail -1`
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH

您如何在鱼中实现这一目标? Fish 想将PHP_VERSION 导出为字符串。

并且还使用这些命令别名来使用当前版本的 MySQL

# Export MAMP MySQL executables as functions
# Makes them usable from within shell scripts (unlike an alias)
mysql() {
    /Applications/MAMP/Library/bin/mysql "$@"
}
mysqladmin() {
    /Applications/MAMP/Library/bin/mysqladmin "$@"
}
export -f mysql
export -f mysqladmin

我试图弄清楚这其中的各个部分,但对命令行的理解有限,很难知道要“搜索”什么。

感谢任何帮助!

【问题讨论】:

    标签: php mysql shell mamp fish


    【解决方案1】:

    fish tutorial 中介绍了设置 PATH。

    通常您可以简单地修改fish_user_paths,但由于您希望在每次启动时动态确定路径,因此直接设置 PATH 会更简单。直截了当的翻译:

    set PHP_VERSION (ls /Applications/MAMP/bin/php/ | sort -n | tail -1)
    set -x PATH /Applications/MAMP/bin/php/$PHP_VERSION/bin $PATH
    

    你可以把它放在~/.config/fish/fish.config

    关于“导出函数”,这始终是一个可疑的想法(它是那个可怕的 bash 安全漏洞的根源),并且不是 fish 支持的东西。您应该将 /Applications/MAMP/Library/bin/mysql 安排在 PATH 中,以便子脚本可以找到您的可执行文件。和以前一样:

    set -x PATH /Applications/MAMP/Library/bin/ $PATH
    

    【讨论】:

    • 谢谢,这很有帮助,但它仍然无法正常工作。它仍然只显示最高版本,而不是当前版本。是否真的可以检测到 MAMP 当前正在使用哪个版本,然后在 $PATH 中(动态地)设置它
    • 我应该重组我的问题并重新发布我认为。首先 - 如何确定动态使用的 PHP mamp 版本。因为运行ls /Applications/MAMP/bin/php/ | sort -n | tail -1 返回total 0,其次是如何动态设置它。
    猜你喜欢
    • 2014-10-27
    • 1970-01-01
    • 2012-10-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2020-07-02
    相关资源
    最近更新 更多