Bash Completion 忽略对 sudo secure_path 所做的更改

Bash Completion 忽略对 sudo secure_path 所做的更改

我想向 root 的 $PATH (以及 sudo 的 secure_path)添加一个新路径(本例中为 /usr/lib/cyrus/bin )。顺便说一句,我在 Debian

首先,我使用 /etc/bash.bashrc 将其添加到 root 的 $PATH 中。到目前为止一切顺利,我得到:

# which cyr_expire
/usr/lib/cyrus/bin/cyr_expire
# cyr<Tab><Tab>
cyradm cyr_dbtool cyrdeliver cyr_deny cyr_df cyrdump cyr_expire cyr_info cyrmaster cyr_sequence cyrus cyr_userseen

Bash Completion 工作得很好。

接下来,我将其添加到 /etc/sudoers 中 sudo 的 secure_path 中:

Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/cyrus/bin"

我检查 sudo 是否可以很好地处理新目录:

$ sudo which cyr_expire
/usr/lib/cyrus/bin/cyr_expire

好的,可以了

但 bash 补全似乎没有考虑到新目录:

$ sudo cyr<Tab><Tab>
cyradm cyrdeliver cyrmaster cyrus 

通过 sudo 调用时,Bash 补全不会建议 /usr/lib/cyrus/bin 下的二进制文件(例如 cyr_dbtool、cyr_deny、cyr_expire 等)。

我错过了什么 ?

相关内容