Saat tmux memulai atau membuka jendela baru, tmux tidak memuat my .profileatau .bashrc. Saya akhirnya mengetik . ~/.bashrcsetiap saat. Adakah cara untuk membuat ini terjadi secara otomatis?
Saat tmux memulai atau membuka jendela baru, tmux tidak memuat my .profileatau .bashrc. Saya akhirnya mengetik . ~/.bashrcsetiap saat. Adakah cara untuk membuat ini terjadi secara otomatis?
Jawaban:
Ya, di akhir Anda .bash_profile, letakkan baris:
. ~/.bashrc
Ini secara otomatis mengambil file rc dalam keadaan di mana biasanya hanya akan memproses profil.
Aturan tentang kapan bashmenjalankan file tertentu rumit, dan bergantung pada jenis shell yang dimulai (login / non-login, interaktif atau tidak, dan sebagainya), bersama dengan argumen baris perintah dan variabel lingkungan.
Anda dapat melihatnya di man bashkeluaran, cari saja INVOCATION- Anda mungkin perlu waktu untuk mencerna dan mendekodekannya :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
Menjalankan bash secara eksplisit bekerja untuk saya, dengan menambahkan baris ini ke file ~ / .tmux.conf saya:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf : set -g default-command "/bin/bash". Terima kasih sobat.
Jawaban sebelumnya memberikan solusi tetapi tidak menjelaskan alasannya. Ini dia.
Ini terkait dengan file Bash init. Secara default, ~/.bashrcdigunakan dalam shell non-login yang interaktif . Ini tidak akan bersumber di shell login. Tmux menggunakan shell login secara default. Karenanya, shell dimulai oleh tmux skip ~/.bashrc.
default-commandperintah shellStandarnya adalah string kosong, yang menginstruksikan tmux untuk membuat shell login menggunakan nilai
default-shellopsi.
File init untuk Bash,
/etc/profile~/.bash_profile, ~/.bash_login, ~/.profile(Hanya pertama yang ada)/etc/bash.bashrc (beberapa Linux; bukan di Mac OS X)~/.bashrc$BASH_ENVPersyaratan pemuatan non-login yang interaktif dan aneh membingungkan orang-orang di situasi lain juga. The solusi terbaik adalah mengubah persyaratan pemuatan ~/.bashrcsebagai interaktif hanya , yang persis apa yang beberapa distro, seperti Ubuntu, lakukan.
# 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
Ini harus menjadi solusi yang Anda inginkan. Dan saya merekomendasikan setiap pengguna Bash mengatur ini di profil.
Referensi
man tmuxDari utas ini:
tampaknya menggunakan .bash_profileakan berhasil.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
Solusi yang berhasil untuk saya adalah sebagai berikut:
.bash_profilefile jika Anda tidak memilikinya~.bash_profileput source ~/.bashrcatausource ~/.profileMasalahnya sekarang harus diperbaiki.
Saya memiliki masalah yang sama dan solusi sejauh ini tidak berhasil untuk saya. Solusi yang akhirnya berhasil untuk saya dapat ditemukan di sini .
Singkatnya, tmuxwindows / session menggunakan shell login yang mencari di ~/.profileantara file-file lain saat dijalankan.
Yang saya inginkan adalah memulai zsh dengan setiap tmuxjendela baru, jadi saya meletakkannya exec zshdi bagian bawah jendela ~/.profile.