Gnome 3.22는 기본적으로 wayland를 사용합니다. Wayland의 Gnome은 ~/.profile
( ~/.bash_profile
또는 )를 읽지 않습니다 /etc/profile
. 바라보다https://bugzilla.gnome.org/show_bug.cgi?id=736660.
내 초기화 파일은 다음과 같이 설정됩니다.
.bash_profile
소스 외에는 아무것도 하지 않습니다.profile
..bashrc
.profile
다음과 같은 환경 변수를 설정하십시오PATH
.LC_MESSAGES
.bashrc
.less
grep
(웨이랜드 전) 효과는 다음과 같습니다:
- 그래픽으로 로그인하면
.profile
및 등의 환경 변수를 읽고 설정합니다. 터미널 에뮬레이터에서 bash를 열면 읽혀집니다.PATH
LC_MESSAGES
.bashrc
- 가상 터미널에서 로그인하면 읽혀
.bash_profile
집니다 ..profile
.bashrc
- SSH를 사용하여 로그인하면 동작이 가상 터미널과 같습니다.
모든 경우에 .profile
내 .bashrc
환경을 읽고 설정했습니다.
이제 gnome 3.22는 wayland를 사용하고 wayland는 읽지 않습니다 .profile
. 위의 효과를 다시 얻으려면 초기화 파일을 어떻게 설정해야 합니까?
나는 .profile
특정 파일(예: 내가 원하는 것은 내 환경을 합리적으로 설정하는 것입니다. 이는 bash 특정 설정을 bash init 파일에 유지하고 기타 설정을 다른 init 파일에 유지하고 싶다는 의미입니다. 또한 설정을 다른 파일에 복사하고 싶지 않습니다.
저는 아치 리눅스를 사용하고 있습니다. 모든 배포판의 답변을 환영합니다. 해결책을 제안할 때 부작용과 장점, 단점을 설명하세요.
.profile
2017년 11월 업데이트: 사람들이 로그인 후 로그인 셸 프로필(bash의 경우 .bash_profile
)을 가져오기를 원한다는 점을 그놈 개발자가 인정한 것으로 알고 있습니다 . 텍스트 또는 그래픽 로그인. 따라서 위에서 설명한 사용 사례가 다시 작동합니다.
그놈 개발자들은 여전히 더 이상 로그인 셸을 실행하지 않기를 원합니다. 그들의 방향은 systemd에서 환경을 사용하는 것 같습니다.
https://in.waw.pl/~zbyszek/blog/environmentd.html
모든 로그인 방법에 익숙해지는 데 시간이 걸리는 것 같습니다.
답변1
Systemd 버전 233(2017년 3월) ~/.config/environment.d/*.conf
에는 .매뉴얼 environment.d
페이지그리고 이 주제로 이어지는 토론이번 예비홍보는그리고이 마지막 것.
답변2
정확히 동일한 문제에 대해 사용한 해결 방법은 다음과 같습니다.
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의 버그가 수정되면 시작 응용 프로그램 목록에서 해당 응용 프로그램을 제거하고 두 파일을 모두 삭제하면 모든 것이 정상으로 돌아갑니다.
나중에 수정
startup.sh
@Guss가 주석에서 지적했듯이 이 해결 방법은 자체 셸에서 실행되기 때문에 환경 변수를 내보내지 않습니다 . 그래서 우리에게는 또 다른 해결책이 필요합니다.
다음에서 읽기그놈 문서몇 가지 옵션이 있음을 알 수 있습니다. 내가 할 수 있는 유일한 일은 파일을 만들고 /usr/share/gdm/env.d/
그 파일에 내보내려는 변수를 넣는 것뿐입니다. 그러나 이는 모든 사용자에 대해 변수를 내보낸다는 의미이므로 결국 수행한 작업은 다음과 같습니다.
두 명의 사용자가 있다고 가정해 보겠습니다.남자그리고출격. 각 파일에 대한 파일을 생성하고 이를 sum /usr/share/gdm/env.d/
이라고 부르겠습니다 . 이 파일에는 새 그놈 세션을 시작할 때 내보내지는 환경 변수가 있습니다.startup_john.env
startup_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
동의합니다. 이것이 가장 우아한 솔루션은 아니지만 제가 테스트한 한 작업이 완료된 것 같습니다.