Gần đây tôi đã quyết định thay đổi biến PS1 của mình để phù hợp với một số màu Solarized đẹp mắt cho niềm vui xem thiết bị đầu cuối của tôi. Khi không ở trong một phiên tmux, mọi thứ đều tuyệt vời! Cầu vồng, ngựa non, kỳ lân và một dấu nhắc phân biệt! Mát mẻ!
Vấn đề là trong tmux, tuy nhiên. Tôi đã xác minh rằng giá trị của PS1 là giá trị mà tôi mong đợi và giống như khi tmux không chạy, cụ thể là \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
.
Tất cả các bí danh của tôi, v.v. trong .bash_profile của tôi cũng hoạt động như mong đợi. tmux cũng đang hiển thị màu sắc mà không có sự cố, như echo -ne "\033[1;33m hi"
hành vi như mong đợi gls --color
.
Dòng có liên quan hiện tại trong .bash_profile của tôi là export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
, mặc dù ban đầu tôi đang tìm nguồn cung cấp tập lệnh nằm trong tệp .bash_prompt để xử lý một số điều kiện, v.v. Tôi đã thử quay lại phiên bản đơn giản hơn.
Việc thực thi bash
sẽ khiến cho dấu nhắc tô màu, nhưng phải được thực hiện trong mỗi khung. export PS1=[that long string I've already posted]
sẽ không.
.Tmux.conf của tôi như sau:
set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
Các phần có liên quan của .bash_profile:
export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
test -z "$TMUX" && (tmux attach || tmux new-session)
fi
Tôi đang sử dụng macOS Sierra, iTerm 2, tôi đã thử cả phiên bản bash homebrew hiện tại và bash hệ thống (hiện đang sử dụng homebrew), tmux 2.4.
Tôi cũng đã đặt touch testing_touch_from_bash_profile
.bash_profile của mình trong khi trong phiên tmux có hai khung, giết một ô, mở một ô và xác minh rằng tệp thực tế đã được tạo.
echo $TERM
trả lại xterm-256color
.
Tôi đã đảm bảo rằng khi thoát tmux để kiểm tra các thay đổi cài đặt mà tôi đã thoát khỏi tmux và hiện tại không có quá trình tmux nào đang chạy trên hệ thống ps -ax | grep tmux
.
Điều kỳ lạ là, tìm nguồn cung cấp tập lệnh .bash_prompt cũng thay đổi màu miễn là tôi làm điều đó trong mỗi khung tmux.
Tôi đã xem /programming/21005966/tmux-prompt-not-following-n normal-bash-prompt-ps1-w và đã thử thêm cờ --login sau cuộc gọi bash ở dòng đầu tiên của .tmux.conf của tôi. Khởi chạy tmux với tmux new bash
sẽ làm cho ô đầu tiên tô màu, nhưng các ô tiếp theo thì không.
Biến $ PS1 đang được vinh danh vì dường như tất cả các khía cạnh ngoại trừ tô màu cho bất kỳ trường nào.
Còn ai có ý tưởng nào không?
PS1
thiết lập bạn được đăng không có bất kỳ lệnh để thay đổi màu sắc. Đăng một thiết lập thực tế hoạt động bên ngoài tmux. Ngoài ra, bạn nên thiết lập PS1
trong .bashrc
, không phải trong .bash_profile
: .bash_profile
có thể không được thực hiện ở tất cả, và các thiết lập có thể ghi đè sau.