Jawaban:
File $HOME/.profile
ini 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 ~/.profile
tetapi cangkang itu agak kuno.
Run command as a login shell
. Anda juga perlu menghapus ~/.bash_profile
, atau menjadikannya sumber ~/.profile
.
$HOME/.profile
dari dalam Zsh Anda juga .zshrc
. Saya cenderung untuk meletakkan semua hal-hal shell portabel saya .profile
dan kemudian saya dapat membagikannya di lingkungan apa pun yang mungkin saya lompati.
~/.profile
adalah 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 ~/.zprofile
sebagai gantinya, dan Csh dan tcsh berjalan ~/.login
.
Jika Anda masuk di bawah manajer tampilan X (xdm, gdm, kdm, ...), apakah ~/.profile
dijalankan tergantung bagaimana manajer tampilan Anda dan mungkin lingkungan desktop dikonfigurasikan oleh distribusi Anda. Jika Anda masuk di bawah "sesi khusus", itu biasanya dijalankan ~/.xsession
.
~/.bashrc
adalah 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.
bash
membaca dari .bash_profile
atau.bashrc
zsh
membaca dari .zprofile
dan .zshrc
ksh
membaca dari .profile
atau$ENV
Jadi, 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.d
file yang relevan (misalnya /etc/pam.d/common-session
pada Debian), dan kemudian ketika pengguna masuk, PAM
akan membaca variabel lingkungan dari ~/.env
.
Perhatikan bahwa pam_env
pada dasarnya hanya mendukung VAR=value
entri.
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 setenv
dalam bash yang Anda gunakan export
untuk mendefinisikan mereka.
Pokoknya Anda bisa menulis file konfigurasi Anda sendiri dan memasukkannya ke source
dalam dotfiles dari shell Anda.