我目前在Ubuntu 14.04 LTS下运行。
我的问题是,当我使用sh
命令运行脚本时,需要另一个文件作为参数,如:
sh script.sh /path/foo.bar
自动完成功能对文件foo.bar
不起作用,我需要自己编写。仅当扩展名为.sh
时才有效。否则,如果我使用命令bash
而不是sh
,则自动完成功能适用于任何文件扩展名。
我尝试将常规script.sh
或#!/bin/bash
添加为#!/bin/sh
的第一行,但没有任何变化。
我还将sh
重新关联到bash
而非初始dash
:ln -s /bin/bash /bin/sh
因此sh
通常会调用bash
,然后工作方式相同?但没有。
我知道我可以简单地使用bash
作为命令扔掉sh
,但是......你知道: - )
==>因此,如果您有任何想法让sh
能够自动完成所有文件扩展名,那么我将非常感激!
答案 0 :(得分:2)
应该使用哪个完成函数取决于命令的名称:sh
而不是任何东西的shebang行或命令的链接目标。
如果要更改该行为,则需要调整sh
的完整功能。在Debian / Ubuntu上,它位于/usr/share/bash-completions/sh
但是,如果您将sh
与bash
相关联,为什么不使用bash
代替sh
?
如果你出于某种原因想要使用sh
而不是bash
,如果它对你来说足够好,可能会出现以下肮脏的伎俩。类型:
+sh <tab-complete> <tab-complete>
现在输入Pos1
并删除前导+
,然后按Enter键。