回答:
このファイル$HOME/.profile
は、bash、sh、dash、およびその他のシェルを含む多くのシェルで使用されます。
bashのmanページから:
bashが対話型ログインシェルとして起動されると、... / etc / profileファイルが存在する場合、そのファイルからコマンドを読み取り、実行します。そのファイルを読み取った後、〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをこの順序で探し、最初に存在して読み取り可能なコマンドを読み取って実行します。
cshとtcshは明示的には調べません~/.profile
が、これらのシェルは時代遅れです。
Run command as a login shell
ます。また、削除する~/.bash_profile
か、ソースにする必要があります~/.profile
。
$HOME/.profile
Zshの内部からソースを取得することもできます.zshrc
。私はすべてのポータブルシェルを入れて、.profile
それから、私がホップする可能性のあるあらゆる環境で共有することができます。
~/.profile
環境変数の定義については、あなたがログインしたときに実行する非グラフィカルプログラムのための右の場所である(例えばssh-agent
、screen -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にヒットしない
共通ファイルはありませんが、すべてのシェルを共通ファイルから読み取ることができます。
bash
.bash_profile
またはから読み取る.bashrc
zsh
から読み取り.zprofile
、 .zshrc
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-session
Debian)で、ユーザーがログインすると、PAM
から環境変数を読み取ります~/.env
。
pam_env
基本的にVAR=value
エントリのみをサポートしていることに注意してください。
詳細: