启用 Bash-Completion 将超级用户可执行文件扩展为完整路径

启用 Bash-Completion 将超级用户可执行文件扩展为完整路径

我正在运行 OpenSUSE 12.3(并且从 11 开始就看到了这种行为),并且发现我无法在不使用完整路径的情况下调用超级用户程序(例如关机、重新启动)。对我来说,许多可执行文件都位于,因此我必须调用 ,/sbin而不是使用。值得庆幸的是,当使用sudo rebootsudo /sbin/reboot须藤OpenSUSE 的 shell (巴什)将在我按下该键时扩展这些路径Tab,因此sudo rebo[Tab]将导致sudo /sbin/reboot.

OpenSUSE 提供了一个名为bash 完成它扩展了自动完成功能巴什包括各种其他上下文(例如设定)。不幸的是,默认情况下,这个包不会将超级用户可执行文件扩展为其完整路径,而只是扩展可执行文件名称,因此sudo rebo[Tab]将导致sudo reboot,这将导致sudo: reboot: command not found错误。

如何安装/运行bash 完成还确保超级用户可执行文件的自动完成扩展到完整路径吗?

答案1

为什么不直接将 /sbin 添加到 PATH var 中?: export PATH=$PATH:/sbin

答案2

扩展@吉尔斯对答案的评论:

这个问题问的是bash 完成将可执行文件扩展/sbin到选项卡上的完整路径,但我通过将超级用户目录(例如/sbin/usr/sbin等)添加到须藤搜索路径。

为此,我必须将secure_path变量添加到 Sudoers 文件中(使用 编辑visudo),类似于以下行:

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

如果有人提供了一个解决方案来实际扩展这些可执行文件的路径,我会认为这是问题的真正答案,但同样,这个解决方案满足了我的要求。

相关内容