Sudo

正確定義的別名或函式,而不是 `sudo nemo 。

  • June 17, 2018

作業系統:Linux Mint 18.x Cinnamon 64 位

說,我想執行nemoCinnamon 中的預設文件管理器,使用 normalsudo和目前工作目錄:

sudo nemo .

問題:

  1. 它顯示了我不關心的不同小錯誤,例如:
(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
  1. 在我關閉它後,它需要 30 秒才能gnome-terminal將控制權交還給我。

目標是定義一個bash aliasor function,它不會有這兩個或任何其他負面方面。

此外:

  1. 我希望它立即交還控制權,以便我可以獨立使用 Nemo 和 Terminal。
  2. 我希望能夠像工作目錄一樣執行它,或者給它一些目錄作為參數。

在我看來,最有效的方法是:

  1. 使用Subshel​​l,即在實際命令的開頭和結尾處()
  2. 後台命令&在最後。
  3. 因為我們將它作為後台程序執行,所以正常 sudo無法解決問題,所以我們必須使用它的圖形等價物,gksudo.
  4. 恕我直言,這是不可能的alias,我們需要定義 a function,因為我們需要檢查參數是否已經給出並採取相應的行動。
  5. 將任何輸出重定向到黑洞 ( > /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.xgksudo中已被刪除。

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
}

引用自:https://unix.stackexchange.com/questions/402312