이것은 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 수준이 모두 다르기 때문에 문제는 그 위치 중 하나 emacs
(또는 시스템 담당자가 새 서버를 구성한 방식) 에 있는 것 같습니다 .
이 이상한 행동에 대해 어떻게 생각하시나요?
고쳐 쓰다: 항목 4에 명시된 원본 게시물이 sudo emacs <myfile>
예상대로 작동합니다. 이것은 사실이 아닙니다. 위에서 수정했습니다.
답변1
여기서 문제는 를 통해 편집기를 실행할 때 sudo
사용자 환경 대신 루트 환경을 사용한다는 것입니다. 일반 사용자와 동일한 방식으로 루트 사용자에 대한 편집기를 구성할 수 있지만 분명히 이는 여러 사람이 액세스할 수 있는 시스템에는 적합하지 않습니다 sudo
.
글쎄, 가장 간단한 해결책은 그렇게 하지 않는 것입니다 sudo
. 원본 파일을 복사하고 복사본을 수정한 다음 다시 원본 파일에 복사하면 됩니다. 여기에서는 복사 작업에만 높은 권한이 필요할 수 있습니다. 많은 시스템에서 이 방법을 사용할 수 있습니다
$ sudoedit /path/to/file
$SUDO_EDITOR
이는 표준 권한 , $VISUAL
, 또는 (순서대로 선택됨) 을 사용하여 대상 파일의 임시 복사본에서 실행되고 $EDITOR
편집기가 종료된 후 원본 파일에 대한 변경 사항을 커밋합니다.
편집기가 emacsclient
just 대신 just 로 설정되어 있고 emacs
서버 모드에서 emacs가 켜져 있는 경우, 변경 사항을 커밋하기 위해 버퍼(전체 emacs가 아님)를 닫으면 됩니다.