Файл $HOME/.profileиспользуется рядом оболочек, включая bash, sh, dash и, возможно, другие.
Со страницы руководства bash:
Когда bash вызывается как интерактивная оболочка входа в систему, ... она сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.
csh и tcsh явно не смотрят, ~/.profileно эти оболочки вроде устарели.
Zsh по умолчанию не читает .profile. Вот почему я удалил свой предыдущий ответ с указанием этого. Zsh читает .profile только тогда, когда он вызывается символической ссылкой с именем sh.
fschmitt
10
tcsh все еще популярен в некоторых средах.
Maciej Piechotka
1
fschmitt: спасибо за исправление; исправлено. Мацей Пехотка: Я не сомневаюсь, что это правда; однако также возможно (хотя и сложно) создавать сценарии * rc, которые импортируют определенные другие сценарии rc на основе оболочки, в которой они работают.
MSS
1
Чтобы этот способ работал, пользователи должны убедиться, что каждая оболочка является оболочкой входа в систему. Например, в Терминале Gnome перейдите в Профиль -> Заголовок и Команда и включите Run command as a login shell. Вы также должны удалить ~/.bash_profileили сделать его источником ~/.profile.
Микель
@fschmitt Вы также можете найти источник $HOME/.profileвнутри Zsh .zshrc. Я имею тенденцию помещать все свои портативные вещи оболочки, .profileи затем я могу разделить это вокруг любой среды, между которой я мог бы прыгать
Бенджамин Р
56
~/.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.
Не забывайте, что zsh также имеет .zloginпомимо того, .zprofileчто запускается после.zshrc (но только для оболочек входа в систему). Смотрите ZSH FAQ
Geeb
21
Нет общего файла, но вы можете сделать так, чтобы каждая оболочка читала из общего файла.
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в файлы точек ваших оболочек.
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?
Зш не попал ~ / .профиль
источник
.zlogin
помимо того,.zprofile
что запускается после.zshrc
(но только для оболочек входа в систему). Смотрите ZSH FAQНет общего файла, но вы можете сделать так, чтобы каждая оболочка читала из общего файла.
bash
читает из.bash_profile
или.bashrc
zsh
читает.zprofile
и.zshrc
ksh
читает из.profile
или$ENV
Итак, вот что я делаю:
~/.env
~/.shrc
~/.bashrc
~/.zshenv
~/.zshrc
~/.profile
~/.bash_profile
~/.zlogin
~/.zprofile
Если у вас есть root-доступ к системе, другой способ - настроить
pam_env
.Вы можете положить
в соответствующем
/etc/pam.d
файле (например,/etc/pam.d/common-session
в Debian), а затем, когда пользователь войдет в систему,PAM
будет считывать переменные среды~/.env
.Обратите внимание, что в
pam_env
основном поддерживаются толькоVAR=value
записи.Больше информации:
источник
Не существует такого понятия, как файл конфигурации среды для различных оболочек, потому что его спецификация оболочки зависит от того, как они определены.
В csh вы используете
setenv
в bash вы используетеexport
для их определения.В любом случае вы можете написать свой собственный конфигурационный файл и включить его
source
в файлы точек ваших оболочек.источник