「グラフィカルログイン」については、使用する* 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を使用してログインで取得されます
2つのケースがあります
- / bin / shは/ bin / bashにリンクされていますが、「POSIX / Bourne」モードで実行されます
- / bin / shは/ bin / dash(debian / ubuntu)です。最速だが機能は少ない(ShellShockサポート;))
したがって、/ bin / shプロファイルは〜/ .profileであり、〜/ .bash_profile、〜/ .zprofileではありません
このファイルは、パスや環境変数などの「シェルに依存しない」設定に使用する必要があります。
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」定義なしで終了します。
したがって、Xから直接起動されたクライアントからの正しいPython実行を有効にするために、〜/ .profileで手元の環境を設定できます。
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には2つの選択肢があります。
- ターミナルがログインシェルとして機能する場合、〜/ .bash_profileまたは〜/ .zprofile(または〜/ .zlogin)でソースします
- 〜/ .bashrcまたは〜/ zshrcにスクリプトを含めます
これは、Xクライアント(たとえば、emacs)はグラフィカルシェルからではなく、ターミナルシェルから起動する必要があることを意味します!
「満足できません...」