![`/etc/profile.d`에 내보낸 변수는 Gnome의 시스템 사용자 환경에서 어떻게 끝나나요?](https://linux55.com/image/213546/%60%2Fetc%2Fprofile.d%60%EC%97%90%20%EB%82%B4%EB%B3%B4%EB%82%B8%20%EB%B3%80%EC%88%98%EB%8A%94%20Gnome%EC%9D%98%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%81%9D%EB%82%98%EB%82%98%EC%9A%94%3F.png)
Systemd가 있는 Gnome에서 systemd 사용자 환경 변수는 다음 명령을 사용하여 구성됩니다.시스템 환경.d메커니즘에서는 쉘 스크립트가 아닌 구성 파일에 의존합니다. 또한 Gnome 세션 내에서는 많은 환경 변수가 사용됩니다 /etc/profile.d/*
.
두 시스템(environment.d 구성 파일과 그 안에 있는 스크립트 /etc/profile.d/*
)은 뚫을 수 없습니다(예를 들어 이러한 변수를 수동으로 가져올 수 있는 방법이 있더라도 systemctl --user import-environment
).
또한 Wayland를 사용할 때 /etc/profile.d/*
Xorg의 Gnome처럼 스크립트를 가져오지 않습니다(scripts 를 사용하면 /etc/gdm/Xsession
스크립트 /etc/profile
자체를 가져 /etc/profile.d/*
와서 ~/.profile
스크립팅함).
따라서 Gnome을 사용할 때 이러한 내보낸 변수는 /etc/profile.d/*
Wayland는 물론 시스템 사용자 환경이나 Xorg에 표시되어서는 안 됩니다.
그러나 이는 사실이 아니다. 예를 들어 이 /etc/profile.d/google-cloud-sdk.sh
스크립트는 일부 맞춤 변수를 내보냅니다.
export CLOUDSDK_ROOT_DIR=/opt/google-cloud-sdk
export CLOUDSDK_PYTHON=/usr/bin/python
export CLOUDSDK_PYTHON_ARGS=-S
export PATH=$CLOUDSDK_ROOT_DIR/bin:$PATH
export GOOGLE_CLOUD_SDK_HOME=$CLOUDSDK_ROOT_DIR
Wayland 및 Xorg에서 Gnome에 로그인한 후 다음을 실행합니다.systemctl --user show-environment
우리는 똑같은 변수를 봅니다:
...
XDG_RUNTIME_DIR=/run/user/1000
CLOUDSDK_PYTHON=/usr/bin/python
CLOUDSDK_PYTHON_ARGS=-S
CLOUDSDK_ROOT_DIR=/opt/google-cloud-sdk
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
...
GOOGLE_CLOUD_SDK_HOME=$CLOUDSDK_ROOT_DIR
...
다른 많은 변수들 중에서.
두 가지 추가 사항:
- 내보낸 변수는
~/.profile
systemd 사용자 환경에 표시되지 않습니다. 이는/etc/profile
스크립트 자체가 소스가 아님을 의미합니다./etc/profile.d/*
스크립트가 직접 소스로 표시됩니다. /etc/profile.d/*
참조된 스크립트가 없습니다.시스템 환경 생성기
그렇다면 systemd나 gnome이 이러한 스크립트를 얻을 수 있는 문서화된 방법이 없다는 점을 고려하면 이것이 어떻게 가능합니까 /etc/profile.d/*
?