すべてのシェルが読める「.bashrc」に対応するファイルはありますか?

すべてのシェルが読める「.bashrc」に対応するファイルはありますか?

ユーザー固有の環境変数、エイリアス、変数の変更などを~/.bashrc 指定する唯一の場所ですか?PATH

~/.bashrc- しかないみたいでよかったですがbash、他の殻も存在します...

答え1

このファイルは、$HOME/.profilebash、sh、dashなどを含む多くのシェルで使用されます。

Bashのマニュアルページから:

bashが対話型ログインシェルとして呼び出されると、まず/ etc / profileファイル(ファイルがある場合)からコマンドを読み取り、実行します。ファイルを読み込んだら、~/.bash_profile、~/.bash_login、~/.profile を順番に探して、存在して読み取れる最初のファイルからコマンドを読み込んで実行します。

cshとtcshは明示的には見ていませんが、~/.profileこれらのシェルは少し古いです。

答え2

~/.profileは、ログイン時に実行される環境変数定義および非グラフィックプログラム(たとえばssh-agentscreen -mの正しい場所です。これは、Bourneスタイルのシェル(sh、ksh、bash)の場合はログインシェルによって実行されます。代わりにZshが実行され、~/.zprofileCshとtcshが実行されます~/.login

Xディスプレイマネージャ(xdm、gdm、kdm ...)にログインしている場合、~/.profileこれが機能するかどうかは、ディストリビューションがディスプレイマネージャとデスクトップ環境をどのように設定したかによって異なります。これは通常、「カスタムセッション」にログインした場合に行われます~/.xsession

~/.bashrcエイリアス、関数、シェルオプション、プロンプトなど、bash関連の設定の正しい場所です。名前が示すように、これはbashに固有のものです。 cshにはit ~/.cshrc、kshにはit ~/.kshrc、zshには<drumroll>があります~/.zshrc

また見なさい:

答え3

汎用ファイルはありませんが、すべてのシェルを汎用ファイルから読み取ることができます。

  1. bash読ん.bash_profileだり.bashrc
  2. zsh次から読む.zprofile そして .zshrc
  3. ksh読ん.profileだり$ENV

だからこれが私がしたことです:

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

システムへのルートアクセス権がある場合は、他の方法はpam_env

あなたは置くことができます

session optional pam_env.so user_envfile=.env

関連/etc/pam.dファイル(Debianなど)に保存し、ユーザー/etc/pam.d/common-sessionがログインしたら。PAM~/.env

デフォルトではアイテムのみがpam_envサポートVAR=valueされています。

追加情報:

答え4

定義される方法もシェルによって異なるため、さまざまなシェルの環境設定ファイルのようなものはありません。

cshとsetenvbashで使用してexport定義します。

とにかく、独自の設定ファイルを作成してsourceシェルのドットファイルに含めることができます。

関連情報