Khi tmux khởi động hoặc mở một cửa sổ mới, nó không tải của tôi .profile
hoặc .bashrc
. Tôi kết thúc đánh máy . ~/.bashrc
mọi lúc. Có cách nào để làm cho điều này xảy ra tự động không?
Khi tmux khởi động hoặc mở một cửa sổ mới, nó không tải của tôi .profile
hoặc .bashrc
. Tôi kết thúc đánh máy . ~/.bashrc
mọi lúc. Có cách nào để làm cho điều này xảy ra tự động không?
Câu trả lời:
Có, ở cuối của bạn .bash_profile
, hãy đặt dòng:
. ~/.bashrc
Điều này tự động tạo nguồn cho tệp rc trong những trường hợp mà nó thường chỉ xử lý hồ sơ.
Các quy tắc về thời điểm bash
chạy các tệp nhất định rất phức tạp và phụ thuộc vào loại trình bao được khởi động (đăng nhập / không đăng nhập, tương tác hay không, v.v.), cùng với các đối số dòng lệnh và biến môi trường.
Bạn có thể thấy chúng trong man bash
đầu ra, chỉ cần tìm INVOCATION
- có thể bạn sẽ cần một thời gian để hiểu và giải mã nó mặc dù :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
Chạy bash rõ ràng có tác dụng với tôi, bằng cách thêm dòng này vào tệp ~ / .tmux.conf của tôi:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf
: set -g default-command "/bin/bash"
. Cảm ơn bạn đời.
Câu trả lời trước đây cung cấp giải pháp nhưng không giải thích lý do. Nó đây.
Điều này liên quan đến các tệp init Bash. Theo mặc định, ~/.bashrc
được sử dụng trong một trình bao tương tác, không đăng nhập . Nó sẽ không có nguồn trong trình bao đăng nhập. Tmux sử dụng trình bao đăng nhập theo mặc định. Do đó, các shell bắt đầu bởi tmux bỏ qua ~/.bashrc
.
default-command
lệnh shellMặc định là một chuỗi trống, nó hướng dẫn tmux tạo một trình bao đăng nhập bằng cách sử dụng giá trị của
default-shell
tùy chọn.
Init tệp cho Bash,
/etc/profile
~/.bash_profile
, ~/.bash_login
, ~/.profile
(Chỉ có một đầu tiên mà tồn tại)/etc/bash.bashrc
(một số Linux; không có trên Mac OS X)~/.bashrc
$BASH_ENV
Yêu cầu tải tương tác kỳ lạ, không đăng nhập cũng gây nhầm lẫn cho mọi người trong các tình huống khác. Các giải pháp tốt nhất là thay đổi yêu cầu tải ~/.bashrc
như chỉ tương tác , đó là chính xác những gì một số distro, như Ubuntu, đang làm.
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Đây sẽ là giải pháp mà bạn mong muốn. Và tôi khuyên mọi người dùng Bash thiết lập điều này trong hồ sơ.
Người giới thiệu
man tmux
Từ chủ đề này:
có vẻ như sử dụng .bash_profile
sẽ hoạt động.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
Giải pháp phù hợp với tôi là:
.bash_profile
tệp nếu bạn không có trong~
.bash_profile
đặt source ~/.bashrc
hoặcsource ~/.profile
Sự cố bây giờ sẽ được khắc phục.
Tôi đã gặp vấn đề tương tự và các giải pháp cho đến nay không hiệu quả với tôi. Giải pháp kết thúc làm việc cho tôi có thể được tìm thấy ở đây .
Nói ngắn gọn, tmux
cửa sổ / phiên sử dụng trình bao đăng nhập tìm kiếm một ~/.profile
trong số các tệp khác khi nó khởi động.
Những gì tôi muốn là bắt đầu zsh với mỗi tmux
cửa sổ mới nên tôi đặt exec zsh
ở cuối cửa sổ ~/.profile
.