2

我试图编写一个 bash 脚本来执行带有前缀的命令("DRI_PRIME=1 glxspheres"例如)。这是我当前的脚本:

#!/bin/bash

_graphic() {
    export IFS=":"
    PATHCONTENT=()
    for CONTENTPATH in $PATH; do
            PATHCONTENT+=$(ls $CONTENTPATH)
    done
    COMPREPLY=$PATHCONTENT;
}

complete -F _graphic graphic

DRI_PRIME=1 "$@"

但是这个脚本不会自动完成 $PATH 变量中的文件夹。这有什么问题?

4

1 回答 1

1

我不是 100% 确定问题是什么,但似乎你想有一种说法

$ graphic my_app param blah

它实际上会运行

$ DRI_PRIME=1 my_app param blah

如果是这样,那就很容易了,bash 本身会为您做到这一点:

$ cat a.sh
function graphic {
        DRI_PRIME=1 "$@"
}

complete -A command graphic

complete -A command使 bash 建议命令名称(您使用complete -F _graphic使 bash 调用函数来获得可能的补全)。

于 2013-05-06T13:02:17.840 回答