当exectute'sh script.sh /path/foo.py'时,自动完成功能不起作用

时间:2015-03-20 15:05:51

标签: linux bash shell autocomplete

我目前在Ubuntu 14.04 LTS下运行。

我的问题是,当我使用sh命令运行脚本时,需要另一个文件作为参数,如:

sh script.sh /path/foo.bar

自动完成功能对文件foo.bar不起作用,我需要自己编写。仅当扩展名为.sh时才有效。否则,如果我使用命令bash而不是sh,则自动完成功能适用于任何文件扩展名。

我尝试将常规script.sh#!/bin/bash添加为#!/bin/sh的第一行,但没有任何变化。

我还将sh重新关联到bash而非初始dashln -s /bin/bash /bin/sh

因此sh通常会调用bash,然后工作方式相同?但没有。

我知道我可以简单地使用bash作为命令扔掉sh,但是......你知道: - )

==>因此,如果您有任何想法让sh能够自动完成所有文件扩展名,那么我将非常感激!

1 个答案:

答案 0 :(得分:2)

应该使用哪个完成函数取决于命令的名称:sh而不是任何东西的shebang行或命令的链接目标。

如果要更改该行为,则需要调整sh的完整功能。在Debian / Ubuntu上,它位于/usr/share/bash-completions/sh

但是,如果您将shbash相关联,为什么不使用bash代替sh

如果你出于某种原因想要使用sh而不是bash,如果它对你来说足够好,可能会出现以下肮脏的伎俩。类型:

+sh <tab-complete> <tab-complete>

现在输入Pos1并删除前导+,然后按Enter键。