我正在运行 OpenSUSE 12.3(并且从 11 开始就看到了这种行为),并且发现我无法在不使用完整路径的情况下调用超级用户程序(例如关机、重新启动)。对我来说,许多可执行文件都位于,因此我必须调用 ,/sbin
而不是使用。值得庆幸的是,当使用sudo reboot
sudo /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"
如果有人提供了一个解决方案来实际扩展这些可执行文件的路径,我会认为这是问题的真正答案,但同样,这个解决方案满足了我的要求。