これはCentOS 7およびemacs 24.3.1を実行しているサーバーで遭遇している問題です。
sudo emacs <protected_file>
書き込み権限なしでファイルを実行すると、emacsは.emacsファイルを読み取らず、.emacs.d/elpa/で定義されているコマンドを認識しません。- このファイルを実行すると、
sudo emacs -u myuserid <protected_file>
emacsは私の.emacsファイルを読み込みますが、まだ私のelpaパッケージについては知りません。 - 実行すると、
emacs <protected_file>
.emacsを読み、.emacs.d/elpaパッケージについて学習します。 (もちろん、ファイルは読み取り専用モードで開きます。) - 書き込み権限を持つファイルを実行すると、
sudo emacs <myfile>
emacsは.emacsファイルを読み取らず、.emacs.d/elpa/で定義されているコマンドを認識しません。 emacs <myfile>
期待どおりに動作します。
ただし、emacs 23.1.1でCentOS 6を実行しているホームディレクトリをコピーしたサーバーでは、すべてがうまく機能します。sudo emacs <protected_file>
.emacsを読み、.emacs.d/elpa/のコマンドを認識します。
私のホームディレクトリのファイルとディレクトリの権限が両方のサーバーで同じであることを確認しました。
sudo
OSレベルとEmacsレベルの両方が異なるため、問題はその場所の1つemacs
(またはシステム担当者が新しいサーバーを設定した方法)にあるようです。
この奇妙な行動についてどう思いますか?
修正する:項目4に記載されている元の投稿がsudo emacs <myfile>
期待どおりに機能します。これは本当ではありません。上記で修正しました。
答え1
ここでの問題は、を通じてエディタを実行するときにsudo
ユーザーエクスペリエンスの代わりにルートエクスペリエンスを使用することです。通常のユーザーと同じ方法でrootユーザー用のエディタを設定できますが、明らかにこれは複数の人がアクセスできるシステムには適していませんsudo
。
まあ、最も簡単な解決策はそうしないことですsudo
。元のファイルをコピーしてコピーを変更してから、元のファイルにコピーするだけです。ここでは、コピー操作にのみ高い権限が必要な場合があります。多くのシステムでこの方法を使用できます
$ sudoedit /path/to/file
$SUDO_EDITOR
これは、標準の権限、$VISUAL
または(順番に選択された)を使用して、ターゲットファイルの一時コピーで実行され、エディタが$EDITOR
終了した後にソースファイルへの変更をコミットします。
エディタがemacsclient
justの代わりにjustに設定されており、emacs
サーバーモードでemacsがオンになっている場合は、変更をコミットするためにバッファ(完全なemacsではない)を閉じてください。