it-swarm-tr.com

Tüm kabuklar tarafından okunan ".bashrc" eşdeğeri bir dosya var mı?

Dır-dir ~/.bashrc kullanıcıya özgü ortam değişkenlerini, takma adları, PATH değişkenindeki değişiklikleri vb. belirten tek yer?

Soruyorum çünkü öyle görünüyor ki ~/.bashrc sadece bash- gibi görünüyor, ancak başka mermiler de var…

115
Stefan

Dosya $HOME/.profile, bash, sh, dash ve muhtemelen diğerleri de dahil olmak üzere bir dizi kabuk tarafından kullanılır.

Bash man sayfasından:

Bash etkileşimli bir oturum açma Kabuğu olarak çağrıldığında, ... önce bu dosya varsa/etc/profilinden komutları okur ve yürütür. Bu dosyayı okuduktan sonra bu sırayla ~/.bash_profile, ~/.bash_login ve ~/.profile arar ve var olan ve okunabilir olan ilk komutları okur ve yürütür.

csh ve tcsh açıkça ~/.profile ama bu kabuklar biraz eski.

97
msw

~/.profile, ortam değişkeni tanımları ve oturum açtığınızda çalıştırmak istediğiniz grafik olmayan programlar için doğru yerdir (ör. ssh-agent, screen -m). Bourne tarzı bir Kabuksa (sh, ksh, bash) oturum açma Kabuğunuz tarafından yürütülür. Zsh çalışır ~/.zprofile yerine Csh ve tcsh ~/.login.

X ekran yöneticisi (xdm, gdm, kdm, ...) altında oturum açarsanız, ~/.profile çalıştır, ekran yöneticinizin ve belki de masaüstü ortamınızın dağıtımınız tarafından nasıl yapılandırıldığına bağlıdır. Bir "özel oturum" altında oturum açarsanız, bu genellikle ~/.xsession.

~/.bashrc takma adlar, işlevler, Kabuk seçenekleri ve istemler gibi bash'a özgü ayarlar için doğru yerdir. Adından da anlaşılacağı gibi, bash'a özgüdür; csh'de ~/.cshrc, ksh'da ~/.kshrc ve zsh’da <drumroll> ~/.zshrc.

Ayrıca bakınız:

Ortak bir dosya yoktur, ancak her Kabuğu ortak bir dosyadan okuyabilirsiniz.

  1. bash.bash_profile veya .bashrc
  2. zsh.zprofile ve.zshrc
  3. ksh.profile veya $ENV

İşte yaptığım şey:

~/.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)

Sisteme kök erişiminiz varsa, başka bir yol da pam_env.

Koyabilirsin

session optional pam_env.so user_envfile=.env

ilgili /etc/pam.d dosyasında (örneğin Debian'da /etc/pam.d/common-session) ve kullanıcı oturum açtığında PAM~/.env ortam değişkenlerini okuyacaktır.

pam_env Öğesinin yalnızca VAR=value Girişlerini desteklediğini unutmayın.

Daha fazla bilgi:

23
Mikel

Farklı kabuklar için bir ortam yapılandırma dosyası gibi bir şey yoktur, çünkü Shell'in bile nasıl tanımlandıklarına özgüdür.

Csh'de setenv tuşunu bash'da kullanırsınız, bunları tanımlamak için export kullanırsınız.

Her neyse, kendi yapılandırma dosyanızı yazıp mermilerinizin nokta dosyalarına source ile ekleyebilirsiniz.

15
echox