执行 'sh script.sh /path/foo.py' 时自动完成不起作用
Autocompletion doesn't work when exectute 'sh script.sh /path/foo.py'
我目前 运行正在 Ubuntu 14.04 LTS 下。
我的问题是,当我 运行 一个带有 sh
命令的脚本需要另一个文件作为参数时,例如:
sh script.sh /path/foo.bar
文件foo.bar
没有自动补全功能,需要自己写。仅当扩展名是 .sh
时才有效。否则,如果我使用命令 bash
而不是 sh
,自动完成适用于任何文件扩展名。
我尝试在 script.sh
的第一行添加通常的 #!/bin/bash
或 #!/bin/sh
,但没有任何变化。
我也重新 link sh
到 bash
而不是最初的 dash
: ln -s /bin/bash /bin/sh
因此 sh
通常会调用 bash
然后工作相同?但是没有。
我知道我可以简单地使用 bash
作为命令并丢弃 sh
,但是......你知道 :-)
==> 因此,如果您有任何想法让 sh
能够自动完成所有文件扩展名`,我将不胜感激!
应该使用哪个完成函数由命令的名称决定:sh
而不是由任何东西的 shebang 行或命令的 link 目标决定。
如果您想更改该行为,您需要调整 sh
的完整功能。在 Debian/Ubuntu 它位于 /usr/share/bash-completions/sh
但是,如果您 link 将 sh
编辑为 bash
,为什么不直接使用 bash
而不是 sh
?
如果您出于某种原因想使用 sh
而不是 bash
,如果对您来说足够好的话,另一个肮脏的技巧可能是以下。类型:
+sh <tab-complete> <tab-complete>
现在键入 Pos1
并删除前导 +
,然后按回车键。
我目前 运行正在 Ubuntu 14.04 LTS 下。
我的问题是,当我 运行 一个带有 sh
命令的脚本需要另一个文件作为参数时,例如:
sh script.sh /path/foo.bar
文件foo.bar
没有自动补全功能,需要自己写。仅当扩展名是 .sh
时才有效。否则,如果我使用命令 bash
而不是 sh
,自动完成适用于任何文件扩展名。
我尝试在 script.sh
的第一行添加通常的 #!/bin/bash
或 #!/bin/sh
,但没有任何变化。
我也重新 link sh
到 bash
而不是最初的 dash
: ln -s /bin/bash /bin/sh
因此 sh
通常会调用 bash
然后工作相同?但是没有。
我知道我可以简单地使用 bash
作为命令并丢弃 sh
,但是......你知道 :-)
==> 因此,如果您有任何想法让 sh
能够自动完成所有文件扩展名`,我将不胜感激!
应该使用哪个完成函数由命令的名称决定:sh
而不是由任何东西的 shebang 行或命令的 link 目标决定。
如果您想更改该行为,您需要调整 sh
的完整功能。在 Debian/Ubuntu 它位于 /usr/share/bash-completions/sh
但是,如果您 link 将 sh
编辑为 bash
,为什么不直接使用 bash
而不是 sh
?
如果您出于某种原因想使用 sh
而不是 bash
,如果对您来说足够好的话,另一个肮脏的技巧可能是以下。类型:
+sh <tab-complete> <tab-complete>
现在键入 Pos1
并删除前导 +
,然后按回车键。