Nah, tentang "Login Grafis", itu tergantung pada * DM yang Anda gunakan ...
Dengan GDM (Gnome 3.18) saya punya ini:
/ 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"
Jadi, ~ / .profile didapat dari login menggunakan / bin / sh dan bukan / bin / bash
Ada dua kasus
- / bin / sh ditautkan ke / bin / bash tetapi berjalan dalam mode "POSIX / Bourne"
- / bin / sh adalah / bin / dash (debian / ubuntu). Tercepat tetapi dengan lebih sedikit fitur (dukungan ShellShock;) )
Jadi profil / bin / sh adalah ~ / .profile dan bukan ~ / .bash_profile, ~ / .zprofile
File ini harus digunakan untuk pengaturan "shell agnostic" , seperti path dan variabel lingkungan.
TIDAK boleh ada program yang dapat dieksekusi untuk interaksi pengguna hanya login kecuali di sini (cek surat, keberuntungan, dll ...)
rc ~ /.* hanya dimaksudkan untuk sesi "interaktif" (alias misalnya ...)
Ada perbedaan antara bash dan zsh untuk shell login interaktif
sumber bash saja .bash_profile, sedangkan sumber zsh dalam urutan:
- ~ / .zprofile
- ~ / .zshrc
- ~ / zlogin (di sini alias yang didefinisikan dalam ~ / .zshrc tersedia. untuk shell "interaktif" + "login"
Cara yang benar untuk melakukan ~ / .bash_profile dijawab di sini:
Perbedaan antara .bashrc dan .bash_profile
if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac
Untuk mengaktifkan pengujian (dan pembuatan profil), Anda dapat menggunakan ini
~ / .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`
# ------------------------------------------------
kemudian, untuk menguji:
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
Jadi RVM / virtualenv harus masuk ~ / .profile, IMHO
Tapi ini TIDAK BEKERJA , kadang-kadang ...
Misalnya, virualenvwrapper hanya berfungsi jika shell yang menjalankan Xsession adalah bash "asli" (mengekspor BASH_VERSION)
Jika Anda menggunakan sistem dasbor , variabel lingkungan dan pengaturan jalur berfungsi, tetapi definisi fungsi virualenvwrapper tidak berfungsi karena skrip tidak kompatibel dengan POSIX.
Script tidak memberikan kesalahan tetapi berakhir tanpa definisi "workon" .
Jadi Anda dapat mengatur lingkungan di ~ / .profile , hanya untuk mengaktifkan eksekusi python yang benar dari klien dimulai langsung dari 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-up-your-computer-virtualenvwrapper-linux-all
Tetapi untuk virualenwrapper Anda memiliki dua alternatif:
- sumbernya di ~ / .bash_profile atau ~ / .zprofile (atau ~ / .zlogin) ketika terminal bertindak sebagai shell login
- sertakan skrip dalam ~ / .bashrc atau ~ / zshrc
Ini berarti bahwa klien X (emacs misalnya) harus dimulai dari terminal shell dan bukan dari yang grafis!
"Aku tidak bisa mendapatkan kepuasan ..."