gpt4 book ai didi

linux - 执行 'sh script.sh/path/foo.py' 时自动完成不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:45 25 4
gpt4 key购买 nike

我目前在 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 能够自动完成所有文件扩展`,我将不胜感激!

最佳答案

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

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

但是,如果您将 sh 链接到 bash,为什么不简单地使用 bash 而不是 sh?

如果你出于某种原因想要使用 sh 而不是 bash 另一个肮脏的技巧可能是以下如果它对你来说足够好的话。类型:

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

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

关于linux - 执行 'sh script.sh/path/foo.py' 时自动完成不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com