Khi tmux khởi động hoặc mở một cửa sổ mới, nó không tải của tôi .profilehoặc .bashrc. Tôi kết thúc đánh máy . ~/.bashrcmọ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 .profilehoặc .bashrc. Tôi kết thúc đánh máy . ~/.bashrcmọ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 bashchạ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-commandlệ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-shelltù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_ENVYê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 ~/.bashrcnhư 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 tmuxTừ chủ đề này:
có vẻ như sử dụng .bash_profilesẽ hoạt động.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
Giải pháp phù hợp với tôi là:
.bash_profiletệp nếu bạn không có trong~.bash_profileđặt source ~/.bashrchoặcsource ~/.profileSự 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 ~/.profiletrong 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 tmuxcửa sổ mới nên tôi đặt exec zshở cuối cửa sổ ~/.profile.