Câu trả lời:
Các tập tin $HOME/.profile
được sử dụng bởi một số shell, bao gồm bash, sh, dash, và có thể những người khác.
Từ trang bash man:
Khi bash được gọi như một vỏ đăng nhập tương tác, ... đầu tiên nó sẽ đọc và thực thi các lệnh từ tệp / etc / profile, nếu tệp đó tồn tại. Sau khi đọc tệp đó, nó sẽ tìm ~ / .bash_profile, ~ / .bash_login và ~ / .profile, theo thứ tự đó, đọc và thực thi các lệnh từ lệnh đầu tiên tồn tại và có thể đọc được.
Csh và tcsh rõ ràng không nhìn vào ~/.profile
nhưng những cái vỏ đó là cổ xưa.
Run command as a login shell
. Bạn cũng cần phải loại bỏ ~/.bash_profile
, hoặc làm cho nó nguồn ~/.profile
.
$HOME/.profile
từ bên trong Zsh của mình .zshrc
. Tôi có xu hướng đặt tất cả những thứ vỏ di động của mình vào .profile
và sau đó tôi có thể chia sẻ nó xung quanh bất kỳ môi trường nào tôi có thể nhảy vào giữa.
~/.profile
là nơi phù hợp với các định nghĩa biến môi trường và cho các chương trình phi đồ họa mà bạn muốn chạy khi bạn đăng nhập (ví dụ ssh-agent
, screen -m
). Nó được thực thi bởi shell đăng nhập của bạn nếu đó là shell kiểu Bourne (sh, ksh, bash). Zsh chạy ~/.zprofile
thay thế, và Csh và tcsh chạy ~/.login
.
Nếu bạn đăng nhập dưới trình quản lý hiển thị X (xdm, gdm, kdm, ...), việc ~/.profile
chạy có phụ thuộc vào cách trình quản lý hiển thị và có lẽ môi trường máy tính để bàn được phân phối bởi phân phối của bạn. Nếu bạn đăng nhập dưới một phiên tùy chỉnh của người dùng, thì điều đó thường được thực thi ~/.xsession
.
~/.bashrc
là nơi thích hợp cho các cài đặt dành riêng cho bash, như bí danh, hàm, tùy chọn shell và lời nhắc. Như tên cho thấy, nó là cụ thể cho bash; csh có ~/.cshrc
, ksh có ~/.kshrc
và zsh có <trốngroll> ~/.zshrc
.
Xem thêm:
Sự khác biệt giữa .bashrc và .bash_profile
Tập tin thiết lập nào sẽ được sử dụng để thiết lập các biến môi trường với bash?
Zsh không nhấn ~ / .profile
.zlogin
thêm .zprofile
chạy sau .zshrc
(nhưng chỉ dành cho shell đăng nhập). Xem Câu hỏi thường gặp về ZSH
Không có tệp chung, nhưng bạn có thể làm cho mọi shell được đọc từ một tệp chung.
bash
đọc từ .bash_profile
hoặc.bashrc
zsh
đọc từ .zprofile
và .zshrc
ksh
đọc từ .profile
hoặc$ENV
Vì vậy, đây là những gì tôi làm:
~/.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)
Nếu bạn có quyền truy cập root vào hệ thống, một cách khác là thiết lập pam_env
.
Bạn có thể đặt
session optional pam_env.so user_envfile=.env
trong /etc/pam.d
tệp có liên quan (ví dụ /etc/pam.d/common-session
trên Debian), và sau đó khi người dùng đăng nhập, PAM
sẽ đọc các biến môi trường từ đó ~/.env
.
Lưu ý rằng pam_env
về cơ bản chỉ hỗ trợ VAR=value
các mục.
Thêm thông tin:
Không có thứ nào giống như một tệp cấu hình môi trường cho các shell khác nhau, bởi vì nó thậm chí là vỏ cụ thể như thế nào được định nghĩa.
Trong csh bạn sử dụng setenv
trong bash bạn sử dụng export
để xác định chúng.
Dù sao, bạn có thể viết tập tin cấu hình của riêng bạn và đưa nó source
vào trong các dotfiles của shell của bạn.