鱼是运行中config.fish的缩写

Fish is running abbreviations in config.fish

我刚刚了解了 abbr,所以我将所有别名从单独的函数切换为 abbr 调用。根据文档,我假设我可以通过将它们放在 if status --is-interactive 检查中将它们全部添加到 ~/.config/fish/config.fish 中,但是当我启动 fish 时,我看到它试图 运行 几个命令。知道这将如何发生吗?下面是我的 config.fish 的最小版本,它重现了错误。

set PATH ~/.node/bin $PATH
set PATH ~/bin/ $PATH
set -x NODE_TLS_REJECT_UNAUTHORIZED 0
set JAVA_HOME $JDK_HOME
set GRADLE_USER_HOME ~/.gradle

if status --is-interactive
    abbr --add -g build_clean ./gradlew clean build copyEar && docker-compose down --remove-orphans && docker-compose up --build
end

这导致

~/.config/fish/config.fish (line 8): The file 'docker-compose' is not executable by this user
    abbr --add -g build_clean ./gradlew clean build copyEar && docker-compose down --remove-orphans && docker-compose up --build
                                                               ^
from sourcing file ~/.config/fish/config.fish
    called during startup

如果包含 shell 元字符,请引用缩写扩展。话虽如此,你遇到麻烦的缩写似乎更适合作为一个函数。缩写最适合这样的情况:您希望将非常短的内容扩展为您经常执行的中等长度的命令,并且希望在您的历史记录中进行扩展而不是函数名称。例如,gcm => git checkout master.