비로그인 셸을 위한 시스템 전체 ${PATH}(Debian)

비로그인 셸을 위한 시스템 전체 ${PATH}(Debian)

비슷한 질문이 올라왔는데 문제가 여전히 존재하는 것 같아요.

나는 표준적인 작업을 수행하고 디렉토리에 소프트웨어를 추가했습니다 /opt/. 가자, 가자. /opt/go홈 디렉토리이며 /opt/go/bin바이너리가 있는 곳입니다.

$PATH질문: 시스템 전체로 확장하는 방법로그인하지 않았습니다껍데기. 사용자가 로그인하고 터미널 아이콘을 클릭하면 비로그인 셸이 시작됩니다. 이 시점에서 사용자는 PATHGo 바이너리를 포함해야 합니다.

나는 시도했다:

  • /etc/profile.d/로그인하지 않은 쉘은 그것을 읽을 수 없기 때문에 작동하지 않습니다.
  • /etc/environment.d변수를 사용할 수 없으므로 PATH="${PATH}:/opt/go/bin"작동하지 않습니다. 또한 더 많은 경로를 추가하겠습니다. 루트는 어떻게 다른가요 PATH?
  • /etc/login.defs사용자가 LDAP에 있거나 다른 이유로 인해 읽지 않습니다.

이상하거나 서투른 해결책은 부분적으로 효과적일 수 있습니다.

  • 예를 들어 sheel .rc전역 파일을 수정 bash.bashrc하지만 약간 버그가 있고 업데이트가 저장되지 않습니다. 카탈로그는 .d/*이러한 문제를 해결하는 좋은 방법입니다. 그리고 껍질이 많이 있습니다.
  • 이전에 다른 곳에서 값을 설정하지 않은 컬렉션 과 함께 사용하려면 /etc/environment.d/: . 루트는 어떻게 다른가요?PATHPATHPATH=/usr/local/bin:/usr/bin:...PATH
  • 에 심볼릭 링크 바이너리가 있지만 /usr/local/bin수십 개의 바이너리가 있는 경우 이는 즐거운 일이 아닙니다.

마침내,유일하게 효과적인 방법:

  • 디렉토리를 사용하십시오 /etc/X11/Xsession.d/. 방금 디렉토리에 배치될 동일한 파일을 추가했고 /etc/profile.d/GUI PATH환경에 맞게 올바르게 설정되었습니다. 그리고 TTY와 충돌하지 않습니다 /etc/profile.d/.

애초에 문제가 여전히 존재한다고 쓴 이유는 무엇입니까? /etc/X11/Xsession.d/그렇게 하기엔 이상한 곳인 것 같으니 까요 . 실제로 이 작업을 수행하는 더 나은/올바른 방법이 없나요? 관리자가 사용자를 위해 시스템 범위를 설정하는 것은 흔한 일인 것 같습니다 PATH. :) 아니면 여기에 확실한 해결책이 없는 걸까요?


카밀 에게 감사 인사를 전합니다

관련 정보