"그래픽 로그인"에 대해서는 사용하는 * DM에 따라 다릅니다.
GDM (Gnome 3.18)으로 나는 이것을 가지고있다 :
/ etc / gdm / Xsession
#!/bin/sh <= *important*
...
# First read /etc/profile and .profile
test -f /etc/profile && . /etc/profile
test -f "$HOME/.profile" && . "$HOME/.profile"
# Second read /etc/xprofile and .xprofile for X specific setup
test -f /etc/xprofile && . /etc/xprofile
test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
따라서 ~ / .profile 은 / bin / bash가 아닌 / bin / sh를 사용하여 로그인 소스가됩니다.
두 가지 경우가 있습니다
- / bin / sh 는 / bin / bash에 연결되어 있지만 "POSIX / Bourne"모드에서 실행됩니다.
- / bin / sh 는 / bin / dash (debian / ubuntu)입니다. 가장 빠르지 만 기능이 적은 (ShellShock 지원;) )
따라서 / bin / sh 프로파일은 ~ / .bash_profile, ~ / .zprofile이 아니라 ~ / .profile입니다.
이 파일은 경로 및 환경 변수와 같은 "쉘 불가지론 적" 설정에 사용해야 합니다.
NO 로그인 전용 사용자 상호 작용을위한 실행 프로그램이 될 수 없지만 여기에해야한다 (메일 체크, 재산, 등등 ...)
~ /.* rc는 "대화식"세션에만 사용됩니다 (예 : 별칭).
대화식 로그인 쉘의 bash와 zsh에는 차이가 있습니다
bash는 .bash_profile 만 소스하고 zsh는 순서대로 제공합니다.
- ~ / .zprofile
- ~ / .zshrc
- ~ / zlogin (여기서 ~ / .zshrc에 정의 된 별명을 사용할 수 있습니다. "대화식"+ "로그인"쉘의 경우
~ / .bash_profile 을 수행하는 올바른 방법 은 다음과 같습니다.
.bashrc와 .bash_profile의 차이점
if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
테스트 (및 프로파일 링)를 사용하려면 다음을 사용하십시오.
~ / .bash_profile :
#!/bin/bash
# ------------------------------------------------
export _DOT_BASH_PROFILE_0=`date --rfc-3339=ns`
# ------------------------------------------------
if [ -f ~/.profile ] ; then
. ~/.profile
fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
# ------------------------------------------------
export _DOT_BASH_PROFILE_1=`date --rfc-3339=ns`
# ------------------------------------------------
~ / .zprofile :
#!/bin/zsh
# ------------------------------------------------
export _DOT_ZSH_PROFILE_0=`date --rfc-3339=ns`
# ------------------------------------------------
if [ -f ~/.profile ] ; then
. ~/.profile
fi
# no need to source, zsh already handle ~/.zshrc
###case "$-" in *i*) if [ -r ~/.zshrc ]; then . ~/.zshrc; fi;; esac
# ------------------------------------------------
export _DOT_ZSH_PROFILE_1=`date --rfc-3339=ns`
# ------------------------------------------------
그런 다음 테스트하십시오.
chsh -s /bin/bash
ssh localhost
env
exit
ssh localhost env
ssh -t localhost bash -i -c env
chsh -s /bin/zsh
ssh localhost
env
exit
ssh localhost env
ssh -t localhost bash -i -c env
따라서 RVM / virtualenv는 ~ / .profile, IMHO로 이동해야합니다.
그러나이 작동하지 않음 , 때로는 ...
예를 들어 virualenvwrapper 는 Xsession을 실행하는 쉘이 "원본"bash (BASH_VERSION 내보내기) 인 경우에만 작동합니다.
당신은에있는 경우 대시 시스템, 환경 변수 및 경로 설정 작동하지만 virualenvwrapper 스크립트는 POSIX를 준수하지 않기 때문에 함수 정의가없는 일을.
스크립트는 오류를 발생시키지 않지만 "workon" 정의 없이 종료 됩니다.
따라서 ~ / .profile 에서 환경을 설정할 수 있습니다 . X에서 직접 시작한 클라이언트에서 올바른 파이썬 실행을 활성화하기 만하면됩니다.
export VIRTUAL_ENV="/home/mike/var/virtualenvs/myvirtualenv"
export PATH="$VIRTUAL_ENV/bin:$PATH"
unset PYTHON_HOME
https://gist.github.com/datagrok/2199506
https://www.bountysource.com/issues/9061991-setting-up-your-computer-virtualenvwrapper-linux-all
그러나 virualenvwrapper의 경우 두 가지 대안이 있습니다.
- 터미널이 로그인 쉘 역할을 할 때 ~ / .bash_profile 또는 ~ / .zprofile (또는 ~ / .zlogin) 에서 소스
- ~ / .bashrc 또는 ~ / zshrc에 스크립트 포함
즉, X 클라이언트 (예 : Emacs)는 그래픽이 아닌 터미널 쉘에서 시작해야합니다!
"만족할 수 없다 ..."