Ответы:
Файл $HOME/.profile
используется рядом оболочек, включая bash, sh, dash и, возможно, другие.
Со страницы руководства bash:
Когда 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
). Он выполняется вашей оболочкой входа в систему, если это оболочка в стиле Борна (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?
Зш не попал ~ / .профиль
Нет общего файла, но вы можете сделать так, чтобы каждая оболочка читала из общего файла.
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)
Если у вас есть root-доступ к системе, другой способ - настроить 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
записи.
Больше информации:
Не существует такого понятия, как файл конфигурации среды для различных оболочек, потому что его спецификация оболочки зависит от того, как они определены.
В csh вы используете setenv
в bash вы используете export
для их определения.
В любом случае вы можете написать свой собственный конфигурационный файл и включить его source
в файлы точек ваших оболочек.