操作系统:Linux Mint 18.x Cinnamon 64 位
比如说,我想在当前工作目录中运行nemo
Cinnamon 中的默认文件管理器,以及正常的, :sudo
sudo nemo .
问题:
它显示了我不关心的不同小错误,例如:
(nemo:21081): Gtk-WARNING **: Failed to register client: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
关闭它后,正好需要 30 秒才能
gnome-terminal
将控制权交还给我。
目标是定义 abash
alias
或function
,它不会有这两个或任何其他负面方面。
此外:
我希望它立即交出控制权,以便我可以独立使用 Nemo 和 Terminal。
我希望能够像工作目录一样运行它,或者给它一些目录作为参数。
答案1
从我的角度来看,最有效的方法是:
用一个子壳,
(
即)
在实际命令的开头和结尾。&
最后将命令设置为背景。因为我们将它作为后台进程运行,普通的
sudo
不会成功,所以我们必须使用它的图形等效项,gksudo
.恕我直言,这对于 来说是不可能的
alias
,我们需要定义 afunction
来代替,因为我们需要检查参数是否已给出并采取相应的行动。将任何输出重定向到黑洞(
> /dev/null 2>&1
)是我的一个好习惯。在这种情况下实际上并没有做任何事情。
以下功能满足我的期望,请随意添加您的解决方案。
Linux Mint 18.x 上的工作解决方案
function sunemo {
if [ -z "$1" ]
then
(gksudo nemo . > /dev/null 2>&1 &)
else
(gksudo nemo "$1" > /dev/null 2>&1 &)
fi
}
您可能已经注意到,在 Linux Mint 19.x 中gksudo
已被删除。
Linux Mint 19.x 上的工作解决方案
function sunemo {
if [ -z "$1" ]
then
(nemo "admin://$PWD" > /dev/null 2>&1 &)
else
(nemo "admin://$1" > /dev/null 2>&1 &)
fi
}