![그놈 디스플레이 관리자가 항상 .profile을 읽는 이유는 무엇입니까?](https://linux55.com/image/109966/%EA%B7%B8%EB%86%88%20%EB%94%94%EC%8A%A4%ED%94%8C%EB%A0%88%EC%9D%B4%20%EA%B4%80%EB%A6%AC%EC%9E%90%EA%B0%80%20%ED%95%AD%EC%83%81%20.profile%EC%9D%84%20%EC%9D%BD%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 최근 터미널 프롬프트에서 그놈 디스플레이 관리자에 로그인(getty?)하도록 전환했습니다. 그것~인 것 같다.profile
GDM은 사용자의 로그인 셸 설정(내 경우에는 Zsh)에 관계없이 항상 읽습니다. 왜 그런 겁니까? 하드코딩된거 같은데그들의 기원, 하지만 찾을 수 없습니다. 그들은 왜 이런 일을 하는가? 이 소프트웨어는 Bourne 셸의 특정 기능을 사용합니까?
GDM과 getty를 동시에(대체로) 사용하려는 경우 모든 것을 동기화해야 하기 때문에 이는 좋지 .profile
않습니다 .zprofile
. 중국 구매에 자신 .profile
이 별로 없습니다 .zprofile
( 이전 .bashrc
에 중국에서 구매하려고 했을 때 호환성 문제가 좀 있었습니다 .zshrc
). 나는 Bash 호출이 /bin/sh
POSIX 모드에서 작동한다고 생각하지만 그것이 모든 함정을 피하는지 확신하지 못합니다.
만일을 대비해 저는 최신 Arch Linux를 사용하고 있으며 Wayland를 사용하여 GNOME을 실행하고 있습니다(그러므로 Xsession
관련 스크립트가 없어야 합니다).
답변1
귀하의 질문은 .bashrc
관련이 없습니다. .profile
호환되는 모든 쉘과의 호환성이 필요 sh
하지만 과정은 .bashrc
Bash에만 해당되며 일반적으로 다른 쉘에서 선택해서는 안됩니다.
일반적으로 쉘 간에 공유하고 싶은 내용을 넣고 .profile
,하다다른 셸의 시작 파일에서 가져옵니다(물론 기본적으로 이미 이 작업을 수행하지 않는 한).
분명히, 다른 셸에서 다르게 동작하는 코드를 피해야 합니다(예를 들어 Zsh에서는 누락된 참조가 괜찮지만 Bourne 호환 셸에서는 문제가 있습니다).
질문의 "이유" 부분은 .profile
쉘에서 실행하는 프로그램(또는 "전통적인" 쉘이라고 해야 할 수도 있음)뿐만 아니라 GUI 세션에서 실행하는 프로그램에 설정을 사용할 수 있도록 하기 위한 것입니다. GUI 세션을 "비전통적인" 쉘로 사용)
답변2
ZSH 에뮬레이션을 사용하여 bash와 zsh 간의 비호환성 문제를 해결할 .profile
수 있습니다..zprofile
다음을 다음 항목에 추가하세요 .zprofile
.
최신 zsh 버전을 사용하는 경우:
# Load .profile (but emulating sh to avoid bash/zsh incompatibilities) emulate sh -c 'source ~/.profile'
이전 zsh 버전을 사용하는 경우:
emulate sh . ~/.profile emulate zsh