![Emacs: 다른 사용자, 다른 테마, 동일한 초기화 파일](https://linux55.com/image/23838/Emacs%3A%20%EB%8B%A4%EB%A5%B8%20%EC%82%AC%EC%9A%A9%EC%9E%90%2C%20%EB%8B%A4%EB%A5%B8%20%ED%85%8C%EB%A7%88%2C%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%B4%88%EA%B8%B0%ED%99%94%20%ED%8C%8C%EC%9D%BC.png)
나는 직장에서 emacs를 사용하며 일반적으로 두 명의 다른 사용자를 사용하여 시스템에 연결합니다.
myuser
commonuser
전자는 내 개인 사용자이고, 후자는 팀 전체가 애플리케이션을 관리하기 위해 공유합니다. (관련 없는 참고 사항: 이는 나쁜 생각입니다. 일반적으로 권한을 관리하는 더 나은 방법이 있지만 덜 명확하지만 제 경험상).
불행한 혼란을 피하기 위해 각 사용자에 대해 별도의 테마를 정의하고 해당 초기화 파일에서 이를 정의하고 싶습니다.
init 파일에 정의된 다른 모든 내용은 두 가지 모두에서 공유되어야 합니다.
간단한 해결책
별도의 초기화 파일을 만들고 /path/to/init/file/.emacs
각 사용자의 홈 디렉터리에 다음 파일을 만들었습니다..emacs
(load-file "/path/to/init/file/.emacs")
(load-theme my-favorite-theme)
이것은 매력처럼 작동합니다. 하지만 물론 그것은 너무 쉬울 것입니다!
새로운 솔루션이 필요합니다
을 수정하지 말라고 요청받았는데 .emacs
, commonuser
그 이유에 대해 자세히 설명하지는 않겠지만 사실은 해결 방법을 찾아야 했습니다. 이것이 내가 지금까지 얻은 것입니다:
~myuser/.emacs
사용자와 상관없이 내가 로드하는 완전한 파일이 작성됩니다.별칭은
commonuser
다음과 같이 정의됩니다.alias emacs='emacs -Q --load ~myuser/.emacs'
commonuser
이로 인해 emacs는 init 파일을 무시하고 로드하게 됩니다 myuser
.
이제 내 (간단한) 질문은 다음과 같습니다.
Emacs를 시작한 사용자에 따라 Emacs가 다르게 동작하도록 하려면 어떻게 해야 합니까?
나는 비슷한 것을 하고 싶다:
if [[ $(whoami) == "myuser" ]]; then
(load-theme 'theme1)
if [[ $(whoami) == "commonuser" ]]; then
(load-theme 'theme2)
답변1
Emacs에는 현재 호스트 이름과 사용자 이름을 설명하는 변수가 있습니다. 당신처럼호스트 이름에 따라 조건부로 일부 작업을 수행하려면, 변수가 있습니다 user-login-name
(문서 참조: "가능한 경우 환경 변수에서 얻은 사용자 이름.").
따라서 다음과 같은 내용이 적용될 것 같습니다.
(when (string-equal user-login-name "myuser")
(load-theme 'theme1))
(when (string-equal user-login-name "commonuser")
(load-theme 'theme2))