执行sudo -i命令报错,提示DBUS会话总线地址未定义求助
执行sudo -i命令报错,提示DBUS会话总线地址未定义求助
嘿,别着急,这个报错我之前也碰到过,其实原因很简单:sudo -i会完全模拟root用户的登录环境,但如果是在SSH远程终端或者纯命令行界面下,root用户默认是没有DBUS_SESSION_BUS_ADDRESS和XDG_RUNTIME_DIR这两个环境变量的,所以就会弹出这个错误提示。
给你几个实用的解决办法:
- 临时快速解决:如果只是想这次顺利进入root环境,可以直接把当前用户的这两个变量传递过去,执行下面的命令就行:
sudo -i DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR - 替代方案:如果你不需要完全模拟root的登录环境,其实用
sudo su代替sudo -i也能进入root身份,而且不会触发这个DBus相关的报错,操作更简单。 - 长期解决:要是想每次用
sudo -i都自动带上这些变量,不用每次手动输入,可以修改sudo的配置文件。记得一定要用visudo命令编辑(避免语法错误导致权限问题),打开后添加一行:
保存退出后,下次再用Defaults env_keep += "DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR"sudo -i就不会报错啦。
另外,报错里提到的--machine=@.host --user是针对容器或者跨用户连接总线的场景,如果你是在本地机器上操作,这个提示可以忽略不用管~
备注:内容来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

