Baru-baru ini saya memutuskan untuk mengubah variabel PS1 saya untuk mengakomodasi beberapa warna Solarized cantik untuk kesenangan menonton terminal saya. Ketika tidak dalam sesi tmux, semuanya hebat! Pelangi, kuda poni, unicorn, dan prompt yang dapat dibedakan! Keren!
Masalahnya adalah dalam tmux, namun. Saya telah memverifikasi bahwa nilai PS1 adalah apa yang saya harapkan dan sama seperti ketika tmux tidak berjalan, yaitu \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
.
Semua alias saya, dll di .bash_profile saya juga berfungsi seperti yang diharapkan. tmux juga menampilkan warna tanpa insiden, sebagaimana echo -ne "\033[1;33m hi"
berperilaku seperti yang diharapkan gls --color
.
Baris yang relevan saat ini di .bash_profile saya adalah export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
, meskipun pada awalnya saya sedang mencari skrip yang terletak di file .bash_prompt untuk menangani beberapa persyaratan, dll. Saya mencoba kembali ke versi yang lebih sederhana.
Eksekusi bash
akan menyebabkan prompt untuk mewarnai, tetapi harus dilakukan di setiap panel. export PS1=[that long string I've already posted]
tidak akan.
.Tmux.conf saya adalah sebagai berikut:
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}"
Bagian yang relevan dari .bash_profile:
export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
test -z "$TMUX" && (tmux attach || tmux new-session)
fi
Saya menggunakan macOS Sierra, iTerm 2, saya sudah mencoba versi homebrew bash dan system bash (saat ini menggunakan homebrew), tmux 2.4.
Saya juga ditempatkan touch testing_touch_from_bash_profile
di .bash_profile saya saat dalam sesi tmux dengan dua panel, membunuh satu panel, membuka panel dan memverifikasi bahwa file itu sebenarnya dibuat.
echo $TERM
kembali xterm-256color
.
Saya telah memastikan bahwa ketika keluar tmux untuk menguji perubahan pengaturan, saya telah keluar dari tmux dan bahwa tidak ada proses tmux saat ini berjalan pada sistem melalui ps -ax | grep tmux
.
Anehnya, sumber skrip .bash_prompt juga mengubah warna selama saya melakukannya di setiap panel tmux.
Saya telah melihat /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w dan mencoba menambahkan bendera --login setelah panggilan bash di baris pertama .tmux.conf saya. Meluncurkan tmux with tmux new bash
akan menyebabkan panel pertama berwarna, tetapi panel selanjutnya tidak.
Variabel $ PS1 dihormati karena tampaknya semua aspek kecuali mewarnai salah satu bidang.
Adakah yang punya ide?
PS1
pengaturan Anda diposting tidak memiliki perintah apapun untuk mengubah warna. Posting pengaturan aktual yang berfungsi di luar tmux. Juga, Anda harus menetapkanPS1
di.bashrc
, tidak.bash_profile
:.bash_profile
mungkin tidak dijalankan sama sekali, dan pengaturan mungkin ditimpa kemudian.Jawaban:
PS1 Anda juga memberi saya keluaran hitam putih.
Namun beralih kembali ke tambang memberi saya warna, jadi Anda harus bisa mengetahui perbedaannya, saya gunakan
git_branch adalah fungsi bash yang saya miliki yaitu:
Milik vs Milikku:
Ini berfungsi sama di OSX dan Ubuntu
sumber
Solusi saya untuk masalah ini adalah pengaturan
force_color_prompt=yes
di saya
.bashrc
. Sekarang prompt tmux saya memiliki warna.sumber
tmux
, dan kemudian di dalam menjalankan sesi tmuxsource ~/.bashrc
. Anda perlu melakukannya di setiap panel.Di mesin saya, solusinya adalah menambahkan
untuk
~/.tmux.conf
.sumber