Відповіді:
У файлі $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
). Він виконується вашою оболонкою для входу, якщо це оболонка у стилі Борна (sh, ksh, bash). Zsh працює ~/.zprofile
замість цього, а 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
.zlogin
додаток до .zprofile
якого працює після .zshrc
(але лише для оболонок для входу). Дивіться поширені питання
Немає загального файлу, але ви можете змусити кожну оболонку прочитати із загального файлу.
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
записи.
Більше інформації:
Немає такого поняття, як файл конфігураційного середовища для різних оболонок, оскільки його рівна оболонка визначає те, як вони визначені.
У csh, який ви використовуєте setenv
в bash, ви використовуєте export
для їх визначення.
У будь-якому випадку ви можете написати власний конфігураційний файл і включити його source
до точок файлів оболонок.