Saya ingin tetap saya bash_profile
dalam repositori git dan clone ke mesin apa pun yang saya memiliki akses shell untuk. Karena saya di tmux
sebagian besar waktu saya memiliki user@host
string di baris status, daripada tempat tradisional di prompt shell.
Tidak semua situs yang saya gunakan telah tmux
diinstal, atau saya mungkin tidak selalu menggunakannya. Saya ingin mendeteksi ketika saya tidak ada dalam tmux
sesi dan menyesuaikan prompt saya sesuai. Sejauh ini solusi setengah matang saya .bash_profile
terlihat seperti ini:
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(Memeriksa setiap waktu mungkin bukan pendekatan terbaik, jadi saya terbuka untuk saran untuk cara yang lebih baik dalam melakukan ini. Bash scripting bukan keahlian saya.)
TMUX_PANE
juga. Saya hanya memperhatikan karena resep Anda tidak berhasil. Kemudian saya menemukan bahwa saya terlalu banyak menggunakan (dan selanjutnyaunset
) sebuah variabel dalam skrip shell yang saya sumber melalui.profile
.[ "$TERM" = "screen" ]
mungkin tidak berfungsi. Dalam kasus saya, layar saya melaporkan sebagaiscreen-256
warna.Setelah mencoba berbagai cara, inilah yang akhirnya berhasil untuk saya, kalau-kalau itu membantu siapa pun di luar sana:
Dalam cuplikan kode ini, saya memeriksa untuk melihat apakah kita tidak berada di lingkungan TMUX, saya meluncurkannya. Jika Anda memasukkan potongan kode ini ke
.bashrc
file Anda, Anda akan secara otomatis menjalankan TMUX kapan saja Anda membuka terminal! PS: diuji pada shell Ubuntu.sumber
Adapun jawaban sebelumnya, menguji
${TERM}
variabel dapat menyebabkan kasus sudut,tmux
menetapkan variabel lingkungan dalam hidupnya sendiri:Untuk memeriksa apakah Anda berada di dalam
tmux
lingkungan, cukup periksa:$ [ -z "${TMUX}" ] && echo "not in tmux"
sumber