그놈 디스플레이 관리자가 항상 .profile을 읽는 이유는 무엇입니까?

그놈 디스플레이 관리자가 항상 .profile을 읽는 이유는 무엇입니까?

나는 최근 터미널 프롬프트에서 그놈 디스플레이 관리자에 로그인(getty?)하도록 전환했습니다. 그것~인 것 같다.profileGDM은 사용자의 로그인 셸 설정(내 경우에는 Zsh)에 관계없이 항상 읽습니다. 왜 그런 겁니까? 하드코딩된거 같은데그들의 기원, 하지만 찾을 수 없습니다. 그들은 왜 이런 일을 하는가? 이 소프트웨어는 Bourne 셸의 특정 기능을 사용합니까?

GDM과 getty를 동시에(대체로) 사용하려는 경우 모든 것을 동기화해야 하기 때문에 이는 좋지 .profile않습니다 .zprofile. 중국 구매에 자신 .profile이 별로 없습니다 .zprofile( 이전 .bashrc에 중국에서 구매하려고 했을 때 호환성 문제가 좀 있었습니다 .zshrc). 나는 Bash 호출이 /bin/shPOSIX 모드에서 작동한다고 생각하지만 그것이 모든 함정을 피하는지 확신하지 못합니다.

만일을 대비해 저는 최신 Arch Linux를 사용하고 있으며 Wayland를 사용하여 GNOME을 실행하고 있습니다(그러므로 Xsession관련 스크립트가 없어야 합니다).

답변1

귀하의 질문은 .bashrc관련이 없습니다. .profile호환되는 모든 쉘과의 호환성이 필요 sh하지만 과정은 .bashrcBash에만 해당되며 일반적으로 다른 쉘에서 선택해서는 안됩니다.

일반적으로 쉘 간에 공유하고 싶은 내용을 넣고 .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
    

인용하다:Zsh가 ~/.profile을 클릭하지 않습니다.

관련 정보