Sudo
正確定義的別名或函式,而不是 `sudo nemo 。
作業系統:Linux Mint 18.x Cinnamon 64 位
說,我想執行
nemo
Cinnamon 中的預設文件管理器,使用 normalsudo
和目前工作目錄: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
將控制權交還給我。目標是定義一個
bash
alias
orfunction
,它不會有這兩個或任何其他負面方面。此外:
- 我希望它立即交還控制權,以便我可以獨立使用 Nemo 和 Terminal。
- 我希望能夠像工作目錄一樣執行它,或者給它一些目錄作為參數。
在我看來,最有效的方法是:
- 使用Subshell,即在實際命令的開頭和結尾處
(
。)
- 後台命令
&
在最後。- 因為我們將它作為後台程序執行,所以正常
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 }