すべてのシェルで読み取られる同等の「.bashrc」ファイルはありますか?


105

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

ただのように思え~/.bashrcますbashが、他のシェルも存在しているので…

回答:


94

このファイル$HOME/.profileは、bash、sh、dash、およびその他のシェルを含む多くのシェルで使用されます。

bashのmanページから:

bashが対話型ログインシェルとして起動されると、... / etc / profileファイルが存在する場合、そのファイルからコマンドを読み取り、実行します。そのファイルを読み取った後、〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをこの順序で探し、最初に存在して読み取り可能なコマンドを読み取って実行します。

cshとtcshは明示的には調べません~/.profileが、これらのシェルは時代遅れです。


7
デフォルトでは、Zshは.profileを読み取りません。そのため、これを記載した以前の回答を削除しました。Zshは、shという名前のシンボリックリンクによって呼び出されたときにのみ.profileを読み取ります。
fschmitt

10
tcshは、一部の環境で今でも人気があります。
マチェイピエチョトカ

1
fschmitt:修正してくれてありがとう。一定。Maciej Piechotka:それは間違いないでしょう。ただし、(複雑ではありますが)実行中のシェルに基づいて特定の他のrcスクリプトをインポートする* rcスクリプトを作成することもできます。
msw

1
この方法で動作するには、ユーザーは各シェルがログインシェルであることを確認する必要があります。たとえば、Gnomeターミナルで、[プロファイル]-> [タイトルとコマンド]に移動し、を有効にしRun command as a login shellます。また、削除する~/.bash_profileか、ソースにする必要があります~/.profile
ミケル

@fschmitt $HOME/.profileZshの内部からソースを取得することもできます.zshrc。私はすべてのポータブルシェルを入れて、.profileそれから、私がホップする可能性のあるあらゆる環境で共有することができます。
ベンジャミンR

56

~/.profile環境変数の定義については、あなたがログインしたときに実行する非グラフィカルプログラムのための右の場所である(例えばssh-agentscreen -m)。Bourneスタイルのシェル(sh、ksh、bash)の場合、ログインシェルによって実行されます。~/.zprofile代わりにZshが実行され、Cshとtcshが実行され~/.loginます。

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

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

参照:
.bashrcと.bash_profileの違い
bashで環境変数を設定するために使用するセットアップファイルはどれですか?
Zshが〜/ .profileにヒットしない


zshのもいることを忘れないでください.zloginに加えて、.zprofile走るの後に .zshrc(だけログインシェル用)。ZSH FAQ
Geeb

21

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

  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ファイル(例:/etc/pam.d/common-sessionDebian)で、ユーザーがログインすると、PAMから環境変数を読み取ります~/.env

pam_env基本的にVAR=valueエントリのみをサポートしていることに注意してください。

詳細:


14

さまざまなシェルの環境設定ファイルのようなものはありません。シェル特有の定義方法でさえあるからです。

setenvbashで使用するcshでは、exportそれらの定義に使用します。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.