`/etc/profile.d`에 내보낸 변수는 Gnome의 시스템 사용자 환경에서 어떻게 끝나나요?

`/etc/profile.d`에 내보낸 변수는 Gnome의 시스템 사용자 환경에서 어떻게 끝나나요?

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
...

다른 많은 변수들 중에서.

두 가지 추가 사항:

  • 내보낸 변수는 ~/.profilesystemd 사용자 환경에 표시되지 않습니다. 이는 /etc/profile스크립트 자체가 소스가 아님을 의미합니다. /etc/profile.d/*스크립트가 직접 소스로 표시됩니다.
  • /etc/profile.d/*참조된 스크립트가 없습니다.시스템 환경 생성기

그렇다면 systemd나 gnome이 이러한 스크립트를 얻을 수 있는 문서화된 방법이 없다는 점을 고려하면 이것이 어떻게 가능합니까 /etc/profile.d/*?

관련 정보