웨이 랜드에서 그놈에 대한 환경 변수 설정 및 가상 터미널에서 bash (또는 ssh)


13

Gnome 3.22는 기본적으로 wayland를 사용합니다. WAYLAND에 그놈 읽지 않습니다 ~/.profile(또는 ~/.bash_profile/etc/profile). https://bugzilla.gnome.org/show_bug.cgi?id=736660을 참조 하십시오 .

초기화 파일을 다음과 같이 설정했습니다.

  • .bash_profile아무것도하지만, 소스를하지 않습니다 .profile.bashrc
  • .profile단지 같은 환경 설정 변수 PATHLC_MESSAGES
  • .bashrc같은 응용 프로그램에 대한 몇 가지 bash는 특정 설정 및 별칭과 환경 변수 설정 lessgrep.

효과 (웨이 랜드 이전)는 다음과 같습니다.

  • 나는 그래픽으로 로그인 할 때 .profile읽기 및 환경 변수 같았다 PATHLC_MESSAGES설정했다. 터미널 에뮬레이터 내부에서 bash를 열면 .bashrc읽었습니다.
  • 나는 가상 터미널에서 로그인 할 때 다음 .bash_profile다시 읽는 읽은 .profile.bashrc.
  • ssh를 사용하여 로그인하면 동작은 가상 터미널과 유사합니다.

모든 경우에 .profile.bashrc읽은 내 환경 설정되었다.

따라서 gnome 3.22는 wayland를 사용하고 wayland는 읽지 않습니다 .profile. 위에서 설명한대로 다시 효과를 갖도록 초기화 파일을 어떻게 설정합니까?

특정 파일 (예 :)을 .profile읽도록 주장하지는 않습니다 . 내가 원하는 것은 환경을 적절하게 설정하는 것입니다. 즉, bash 특정 설정을 bash 초기화 파일에 유지하고 다른 설정을 다른 초기화 파일에 유지하려고합니다. 또한 다른 파일로 설정을 복사하고 싶지 않습니다.

아치 리눅스를 사용합니다. 모든 배포판에 대한 답변을 환영합니다. 해결 방법을 제안 할 때 부작용과 장단점도 설명하십시오.


2017 년 11 월 업데이트 : 그놈 개발자가 사람들이 로그인 쉘 구성 파일 ( .profile.bash_profilebash의 경우)이 로그인 후 소스가 될 것으로 기대한다는 것을 이해 한 한. 텍스트 또는 그래픽 로그인에 관계없이 위에서 설명한 유스 케이스가 다시 작동합니다.

여전히 그놈 개발자는 로그인 쉘을 시작하지 않기를 원합니다. 그들이 가고있는 방향은 systemd에서 환경을 사용하는 것 같습니다.

https://in.waw.pl/~zbyszek/blog/environmentd.html

모든 로그인 방법이 환경에 적응 될 때까지 시간이 걸리는 것 같습니다.

답변:


7

시스템 버전 233 (2017 년 3 월)에는에 환경 변수 설정에 대한 지원이 추가되었습니다 ~/.config/environment.d/*.conf. 참조 man 페이지 와의 기능을 주도하는 토론 이 예비 PR마지막 하나 .environment.d


이것은 매우 좋은 해결책 인 것 같습니다. 나는 빠른 테스트를했다. 그놈 웨이 랜드에서는 작동하지만 가상 터미널에서는 작동하지 않습니다. ssh에서도 작동하지 않는다고 가정합니다. 나는 맨 페이지를 읽었지만 토론을 훑어 보았습니다. 이것이 가상 터미널 및 ssh에서도 작동하는지 여부를 알고 있습니까?
lesmana

1
다음은 상황을 요약 한 것입니다 : in.waw.pl/~zbyszek/blog/environmentd.html . 마지막 단락은 가상 터미널 (및 ssh?)에 대한 지원이 "올 수있다"고 말합니다. 적어도 내가 올바르게 이해한다면.
lesmana

흥미 롭습니다. GDM이 제대로 작동하려면 GDM이 특별한 지원을 추가해야한다는 것을 몰랐습니다. 모든 유형의 세션이 단일 사용자 서비스 프로세스의 하위 항목 인 일종의 배열이 있었을 수 있으며, 이러한 환경을 이미 구문 분석했으며 GDM / sshd가 그에 대해 아무것도 알 필요없이 작동 하는가?
잭 오코너

1
GDM / Wayland가있는 Fedora 30에서는 작동하지 않습니다.
jonleighton 2016 년

'솔루션'은 합리적인 사용 사례가 누락되었습니다. A 인 경우 B를 설정하십시오. 예를 들어 XDG_SESSION_TYPE = wayland 인 경우 QT_QPA_PLATFORM = wayland를 설정하십시오.
vk5tu

5

이것은 똑같은 문제에 사용하는 해결 방법입니다.

1 단계

소스 ~/.profile를 작성하고 해당 스크립트를 실행 가능하게 하는 스크립트를 작성하십시오 . 그것을 호출하자 /path/to/startup.sh. 다음과 같이 보일 수 있습니다.

#!/bin/bash
. ~/.profile

2 단계

스크립트를 실행할 데스크탑 애플리케이션을 작성하십시오. 이렇게하려면 .desktop파일 을 작성하고 파일을 배치해야합니다 ~/.local/share/applications(또는 /usr/share/applications모든 사용자가 사용할 수 있도록하려면). 그것을 호출하자 ~/.local/share/applications/startup.desktop. 다음과 같이 보일 수 있습니다.

[Desktop Entry]
Name=Startup
Keywords=startup
Exec=/path/to/startup.sh
Type=Application

.desktop파일 에 대한 자세한 내용 은 여기를 참조 하십시오 .

3 단계

로그 아웃. 다시 로그인하십시오. 이제 응용 프로그램 메뉴에서 응용 프로그램을 검색 할 수 있습니다.

4 단계

이 응용 프로그램을 시작 응용 프로그램으로 설정하십시오. 이를 위해 Gnome Tweak Tool을 사용하여 시작 응용 프로그램 탭의 목록에 응용 프로그램을 추가했습니다.

그리고 그게 다야! 이제 로그인 할 때마다 이전 기능을 다시 가져와야합니다. 또한 파일 구조를 그대로 유지하므로 Wayland의 버그가 수정되면 시작 응용 프로그램 목록에서 응용 프로그램을 제거하고 두 파일을 삭제하면됩니다. 모든 것이 정상으로 돌아 왔습니다.

나중에 편집

@Guss가 주석에서 지적 했듯이이 해결 방법은 startup.sh자체 쉘에서 실행 되기 때문에 환경 변수를 내 보내지 않습니다 . 따라서 다른 해결 방법이 필요합니다.

로부터 읽기 그놈 문서 몇 대안이 있다는 것을 알 수있다. 내가 일할 수있는 유일한 것은 파일을 만들고 해당 파일에 /usr/share/gdm/env.d/내보낼 변수를 배치하는 것입니다. 그러나 이것은 변수가 모든 사용자에 대해 내 보내져 결국 내가 한 일은 다음과 같습니다.

johnsally 두 사용자가 있다고 가정 해 봅시다 . 그들 각각의 파일을 생성 들어 /usr/share/gdm/env.d/,의 그들을 부르 자 startup_john.envstartup_sally.env. 이 파일에는 새로운 그놈 세션을 시작할 때 내보낼 환경 변수가 있습니다.

$ cat startup_john.env
VAR=1
$ cat startup_sally.env
VAR=2

이 시점에서 문제는 두 파일이 두 사용자 모두에 대해로드된다는 것입니다. 이를 해결하기 위해 우리는 각 파일에 대한 권한을 소유자 만이 그 내용을 읽을 수 있도록 설정했습니다.

$ ls -l startup_john.env
-rw-r-----. 1 john john 4 Dec 27 15:17 startup_john.env
$ ls -l startup_sally.env
-rw-r-----. 1 sally sally 4 Dec 27 15:16 startup_sally.env

가장 우아한 해결책은 아니지만 동의하지만 테스트 한 한 작업이 완료 된 것 같습니다.


나는 이것을 테스트하지 않았지만 startup.sh자체 쉘에서 실행 중이고 환경 변수를 부모 실행 컨텍스트로 내 보내지 않기 때문에 작동하지 않아야합니다 . 예를 들어, 쉘에서이 코드를 실행하십시오 : echo "a is $a"; (export a="B"); echo "a is $a" . @Tudor에 따르면 두 번째 에코의 출력은이며, a is B코드를 실행할 때 표시됩니다.
거스

안녕하세요 @Guss, 맞습니다. 나는 눈치 채지 못했지만 이제 지적 했으므로 환경 변수에 대한 해결 방법도 발견했습니다. 이에 따라 답변을 업데이트하겠습니다.
Tudor Vișan

1
제발, 나는 당신이 생각해 낸 것을보고 싶습니다. 또한 "Wayland의 버그가 수정 될 때"라고 말하면 낙관적이라고 생각합니다. 이것은 Wayland의 버그가 아니라 그놈의 버그이며 그놈 사람들은 이것을 버그로 간주하지 않습니다. 문서화 된 동작 : wiki .gnome.org / Initiatives / Wayland / SessionStart
Guss

이것이 여전히 어떻게 든 돌보지 않는다는 사실에 충격을줍니다. 내 .profile을 소싱하기위한 모든 것?!?
RichieHH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.