Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 我如何修改zsh以在$PATH之前使用本地目录自动完成'source'?_Bash_Shell_Sh_Zsh_Zsh Completion - Fatal编程技术网

Bash 我如何修改zsh以在$PATH之前使用本地目录自动完成'source'?

Bash 我如何修改zsh以在$PATH之前使用本地目录自动完成'source'?,bash,shell,sh,zsh,zsh-completion,Bash,Shell,Sh,Zsh,Zsh Completion,我无法计算我键入的次数:source en只在屏幕上留下一堆乱七八糟的文本,因为它源于程序env而不是本地env.sh 我试着制作一个简单的函数来检测这个特定的用例,但没有成功 这就是我所尝试的: source () { if [ "$1" == "env" ] then source ./env.sh else source $@ fi } 我意识到source是一个shell命令,这可能是它不起作用的原因,但我并不真正关心它是

我无法计算我键入的次数:
source en
只在屏幕上留下一堆乱七八糟的文本,因为它源于程序env而不是本地env.sh

我试着制作一个简单的函数来检测这个特定的用例,但没有成功

这就是我所尝试的:

source () {
    if [ "$1" == "env" ]
    then
        source ./env.sh
    else
        source $@
    fi
}
我意识到source是一个shell命令,这可能是它不起作用的原因,但我并不真正关心它是如何实现的,我只想在本地目录之前停止在$PATH上寻找二进制文件


干杯

它不起作用的原因是递归调用函数。使用
内置源代码
调用内置源代码而不是函数源代码:

source () {
    if [ "$1" == "env" ]
    then
        builtin source ./env.sh
    else
        builtin source $@
    fi
}

它不起作用的原因是递归调用函数。使用
内置源代码
调用内置源代码而不是函数源代码:

source () {
    if [ "$1" == "env" ]
    then
        builtin source ./env.sh
    else
        builtin source $@
    fi
}

不要重写常规命令(
source
)来处理特殊情况,而是使 处理特殊情况的新命令

locenv () {
    source ./env.sh
}

不要重写常规命令(
source
)来处理特殊情况,而是使 处理特殊情况的新命令

locenv () {
    source ./env.sh
}