我想向 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 等)。
我错过了什么 ?