Saat tmux memulai atau membuka jendela baru, tmux tidak memuat my .profile
atau .bashrc
. Saya akhirnya mengetik . ~/.bashrc
setiap saat. Adakah cara untuk membuat ini terjadi secara otomatis?
Saat tmux memulai atau membuka jendela baru, tmux tidak memuat my .profile
atau .bashrc
. Saya akhirnya mengetik . ~/.bashrc
setiap 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 bash
menjalankan 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 bash
keluaran, 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, ~/.bashrc
digunakan 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-command
perintah shellStandarnya adalah string kosong, yang menginstruksikan tmux untuk membuat shell login menggunakan nilai
default-shell
opsi.
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_ENV
Persyaratan pemuatan non-login yang interaktif dan aneh membingungkan orang-orang di situasi lain juga. The solusi terbaik adalah mengubah persyaratan pemuatan ~/.bashrc
sebagai 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 tmux
Dari utas ini:
tampaknya menggunakan .bash_profile
akan berhasil.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
Solusi yang berhasil untuk saya adalah sebagai berikut:
.bash_profile
file jika Anda tidak memilikinya~
.bash_profile
put source ~/.bashrc
atausource ~/.profile
Masalahnya 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, tmux
windows / session menggunakan shell login yang mencari di ~/.profile
antara file-file lain saat dijalankan.
Yang saya inginkan adalah memulai zsh dengan setiap tmux
jendela baru, jadi saya meletakkannya exec zsh
di bagian bawah jendela ~/.profile
.