我目前正在从zsh移动到fish。我的大多数别名等都很容易移植,但我遇到了以下一个问题:
alias idf.py='unalias idf.py; source $IDF_PATH/export.sh; idf.py'
我知道在fish中别名只是函数的语法糖,所以我开始写下面的函数:
function "idf.py"
source $IDF_PATH/export.fish
functions --erase idf.py
idf.py $argv
end
出口。Fish脚本来自esp-idf,并且开始抱怨需要源代码。之后,函数被正确删除,但无法找到idf.py:
his script should be sourced, not executed:
realpath: /home/robert/Programs/esp-idf/export.fish/..: Not a directory
.
fish: Unknown command: idf.py
fish:
idf.py $argv
^
in function 'idf.py'
你知道我如何从这个函数内部源到全局作用域吗?
查看您链接到的项目的提交历史——您链接的ESP-IDF脚本是最新版本,但是您收到的错误来自脚本早期版本的错误,该脚本已被修复。
脚本试图通过测试status current-command
来检测它是否被source
命令调用,但由于您是从函数idf.py
中调用它,因此返回的名称是,而不是source
。
这是一个错误,大约两年前通过简单地删除源代码检查就修复了。
升级到最新的ESP-IDF版本应该可以解决这个问题。