Jawaban:
File $HOME/.profileini digunakan oleh sejumlah shell, termasuk bash, sh, dash, dan mungkin lainnya.
Dari halaman bash man:
Ketika bash dipanggil sebagai shell login interaktif, ... pertama kali membaca dan mengeksekusi perintah dari file / etc / profile, jika file itu ada. Setelah membaca file itu, ia mencari ~ / .bash_profile, ~ / .bash_login, dan ~ / .profile, dalam urutan itu, dan membaca serta mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca.
csh dan tcsh secara eksplisit tidak melihat ~/.profiletetapi cangkang itu agak kuno.
Run command as a login shell. Anda juga perlu menghapus ~/.bash_profile, atau menjadikannya sumber ~/.profile.
$HOME/.profiledari dalam Zsh Anda juga .zshrc. Saya cenderung untuk meletakkan semua hal-hal shell portabel saya .profiledan kemudian saya dapat membagikannya di lingkungan apa pun yang mungkin saya lompati.
~/.profileadalah tempat yang tepat untuk definisi variabel lingkungan dan untuk program non-grafis yang ingin Anda jalankan ketika Anda masuk (misalnya ssh-agent, screen -m). Ini dijalankan oleh shell login Anda jika itu adalah shell bergaya Bourne (sh, ksh, bash). Zsh berjalan ~/.zprofilesebagai gantinya, dan Csh dan tcsh berjalan ~/.login.
Jika Anda masuk di bawah manajer tampilan X (xdm, gdm, kdm, ...), apakah ~/.profiledijalankan tergantung bagaimana manajer tampilan Anda dan mungkin lingkungan desktop dikonfigurasikan oleh distribusi Anda. Jika Anda masuk di bawah "sesi khusus", itu biasanya dijalankan ~/.xsession.
~/.bashrcadalah tempat yang tepat untuk pengaturan spesifik bash, seperti alias, fungsi, opsi shell, dan prompt. Seperti namanya, ini khusus untuk bash; csh memiliki ~/.cshrc, ksh memiliki ~/.kshrc, dan zsh memiliki <drumroll> ~/.zshrc.
Lihat juga:
Perbedaan antara .bashrc dan .bash_profile
File setup mana yang harus digunakan untuk mengatur variabel lingkungan dengan bash?
Zsh tidak memukul ~ /. Profil
Tidak ada file umum, tetapi Anda dapat membuat setiap shell membaca dari file umum.
bashmembaca dari .bash_profileatau.bashrczshmembaca dari .zprofile dan .zshrckshmembaca dari .profileatau$ENVJadi, inilah yang saya lakukan:
~/.env
# Put environment variables here, e.g.
PATH=$PATH:$HOME/bin
~/.shrc
test -f "$HOME/.env" && . "$HOME/.env"
# Put interactive shell setup here, e.g.
alias ll='ls -l'
PS1='$PWD$ '
set -o emacs
~/.bashrc
test -f ~/.shrc && source ~/.shrc
# Put any bash-specific settings here, e.g.
HISTFILE=~/.bash_history
shopt -s extglob
IGNOREEOF=yes
~/.zshenv
# Put any zsh-specific settings for non-interactive and interactive sessions, e.g.
setopt braceexpand
setopt promptsubst
setopt shwordsplit
~/.zshrc
test -f ~/.shrc && source ~/.shrc
# Put any zsh-specific interactive settings here, e.g.
HISTFILE=~/.zsh_history
setopt ignoreeof
~/.profile
# Interactive sub-shells source .env, unless this is bash or zsh,
# because they already sourced .env in .bashrc or .zshrc.
if test -z "$BASH_VERSION" -a -z "$ZSH_VERSION" || test -n "$BASH_VERSION" -a \( "${BASH##*/}" = "sh" \)
then
test -f "$HOME"/.env && . "$HOME"/.env
fi
# The name is confusing, but $ENV is ksh's config file for interactive sessions,
# so it's equivalent to .bashrc or .zshrc.
# Putting this here makes running an interactive ksh from any login shell work.
test -f "$HOME"/.shrc && export ENV="$HOME"/.shrc
# Put any login shell specific commands here, e.g.
ssh-add
stty -ixon
~/.bash_profile
source ~/.bashrc
source ~/.profile
~/.zlogin
# zsh sources .zshrc automatically, only need to source .profile
source ~/.profile
~/.zprofile
(empty)
Jika Anda memiliki akses root ke sistem, cara lain adalah mengatur pam_env.
Anda bisa meletakkannya
session optional pam_env.so user_envfile=.env
dalam /etc/pam.dfile yang relevan (misalnya /etc/pam.d/common-sessionpada Debian), dan kemudian ketika pengguna masuk, PAMakan membaca variabel lingkungan dari ~/.env.
Perhatikan bahwa pam_envpada dasarnya hanya mendukung VAR=valueentri.
Info lebih lanjut:
Tidak ada yang namanya file konfigurasi lingkungan untuk shell yang berbeda, karena itu bahkan shell yang spesifik bagaimana mereka didefinisikan.
Di csh Anda gunakan setenvdalam bash yang Anda gunakan exportuntuk mendefinisikan mereka.
Pokoknya Anda bisa menulis file konfigurasi Anda sendiri dan memasukkannya ke sourcedalam dotfiles dari shell Anda.