システム: Linux Mint 18.1 64ビットシナモン 。
目的: Bash エイリアスを定義してさまざまな [〜#〜] cli [〜#〜] および [〜#〜] gui [〜#〜]を起動する ファイルを root モードで開いている間のテキストエディタ gnome-terminal
エミュレータ。
たとえば、次のエイリアスは期待どおりに機能しているようです。
[〜#〜] cli [〜#〜] の場合、この例ではNano( 公式Webサイト )を使用しました。
alias sunano='Sudo nano'
[〜#〜] gui [〜#〜] の場合、この例ではXed( Wikipediaの記事 )を使用しました。
alias suxed='Sudo xed'
どちらも root としてファイルを開きます。
gksudo
と sublime-text
:
alias susubl='gksudo /opt/sublime_text/sublime_text'
時々動作します。ほとんどの場合、何もしません。
一貫性のない動作でそのようなものをデバッグするにはどうすればよいですか?何も出力しません。エラーメッセージなどはありません。
gksudo
はDebianで非推奨になり、Ubuntu 18.04 Bionicにも含まれなくなったので、この質問をまだ有効な質問に再定式化します。
LinuxのGUI(およびCLI)で(ルートとして)システムファイルを適切に編集するにはどうすればよいですか?
適切にこのコンテキストでは、safelyたとえば、ファイルの編集中に電力損失が発生した場合、別の例ではSSH接続が失われる可能性があります。
どうしても必要な場合を除いて、rootとしてエディターを実行しないでください。 sudoedit
、またはデスクトップ環境の管理機能を使用する必要があります。
sudoedit
sudoedit
が適切に設定されたら、次のことができます。
Sudo_EDITOR="/opt/sublime_text/sublime_text -w" sudoedit yourfile
sudoedit
は、これが許可されていることを確認し、IDを手動で変更せずに編集できるファイルのコピーを作成し、エディターを起動します。エディターが終了したら、ファイルをコピーして戻します。変更されました。
エイリアスではなく関数をお勧めします。
function susubl {
export Sudo_EDITOR="/opt/sublime_text/sublime_text -w"
sudoedit "$@"
}
Jeff Schaller が指摘しているように、env
を使用してこれをエイリアスに入れ、シェルの環境を変更しないようにすることができます。
alias susubl='env Sudo_EDITOR="/opt/sublime_text/sublime_text -w" sudoedit'
-w
オプションは、Sublime Textの呼び出しがファイルが閉じられるまで待機してから戻り、sudoedit
にファイルをコピーして戻すことを保証します。
GNOME(およびおそらく他のデスクトップ環境)では、admin://
プレフィックスを付けてGIO/GVFS対応のエディターを使用できます。例えば
gedit admin:///path/to/your/file
これにより、PolKitを使用して適切な認証を求めるプロンプトが表示され、認証が成功した場合は編集用にファイルが開かれます。
別の解決策:システムファイルを直接編集することはありません。どこかにコピーを作成し(*)、コピーを編集し(通常のエディターを使用)、Sudo cp
それが終わったら。
(*)このためのディレクトリがあり、すべてのファイルが1か所に保存されています。