1

我无法计算我输入的次数:source en<tab>只是在屏幕上留下一堆乱码,因为它来自程序 env 而不是本地 env.sh。

我尝试制作一个简单的函数来检测这个特定的用例,但它没有用。

这是我尝试过的:

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

我意识到 source 是一个 shell 命令,这可能是它不起作用的原因,但我并不真正关心它是如何实现的,我只想在本地目录之前停止在我的 $PATH 上采购二进制文件。

干杯!

4

2 回答 2

1

它不起作用的原因是你递归地调用你的函数。用于builtin source调用内置源而不是您的函数源:

source () {
    if [ "$1" == "env" ]
    then
        builtin source ./env.sh
    else
        builtin source $@
    fi
}
于 2013-03-07T23:54:35.123 回答
0

source与其重写通用命令 ( ) 来处理特殊情况,不如创建一个新命令来处理特殊情况。

locenv () {
    source ./env.sh
}
于 2013-03-08T13:25:27.740 回答