相关疑难解决方法(0)

bash-completion - 在第一次调用命令时定义的completion函数

我添加了一个新别名scp_using_rsync,它使用rsync通过SSH复制文件并使用某些选项.我想将scp的bash完成链接到此别名.

当我添加这一行时,它可以工作:

complete -o bashdefault -o default -o nospace -F _scp scp_using_rsync 2>/dev/null || complete -o default -o nospace -F _scp scp_using_rsync
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我注意到,_scp在我的bash环境中定义,只有在我尝试使用ssh/scp在该shell中至少执行一次tab-completion之后.所以,如果我直接scp_using_rsync在新的shell中运行,我会得到_scp未找到的错误.

typeset -F在为ssh或scp命令尝试制表符完成之前和之后,新shell中的输出清楚地表明在第一次尝试制表符完成后定义了以下函数:

$ diff ~/.scratch/file1 ~/.scratch/file2
224a225,227
> declare -f _scp
> declare -f _scp_local_files
> declare -f _scp_remote_files
226a230
> declare -f _sftp
230a235,240
> declare -f _ssh
> declare -f _ssh_ciphers
> declare -f _ssh_macs
> declare -f _ssh_options
> declare -f _ssh_suboption
> declare -f …
Run Code Online (Sandbox Code Playgroud)

bash bash-completion

4
推荐指数
1
解决办法
2220
查看次数

标签 统计

bash ×1

bash-completion ×1