Bash 为compgen指定另一个目录以自动完成目录,而不是使用pwd

Bash 为compgen指定另一个目录以自动完成目录,而不是使用pwd,bash,bash-completion,compgen,Bash,Bash Completion,Compgen,compgen-d--$cur将仅建议完成pwd中的目录,对吗 我可以让它在另一个目录中为某个目录建议目录完成吗 例如,如果我在/curr\u dir,我想为/other\u dir生成目录补全,我该怎么办?如何将其指定为compgen,以便不需要转到/other\u dir 在我的bash completion函数中,在调用compgen之前,我尝试对该目录执行cd,但在按下后,我将留在另一个目录中 compgen-d--$cur将仅建议完成pwd中的目录,对吗 否,它将完成$cur,假设内容

compgen-d--$cur
将仅建议完成pwd中的目录,对吗

我可以让它在另一个目录中为某个目录建议目录完成吗

例如,如果我在
/curr\u dir
,我想为
/other\u dir
生成目录补全,我该怎么办?如何将其指定为
compgen
,以便不需要转到
/other\u dir

在我的bash completion函数中,在调用
compgen
之前,我尝试对该目录执行
cd
,但在按下
后,我将留在另一个目录中

compgen-d--$cur
将仅建议完成pwd中的目录,对吗

否,它将完成
$cur
,假设内容是路径。通过输入 命令直接插入shell。例如:

$ compgen -d -- "/"
/run
/lib64
/usr
[...]
因此,您唯一需要做的就是使用“$other_dir”而不是“$cur”。 另外,请记住引用字符串,否则shell可能会拆分目录名:

compgen -d -- "$foo" # good
compgen -d -- $foo   # bad