.bashrc / .profile yeni tmux oturumuna (veya penceresine) yüklenmedi - neden?


95

Tmux başladığında veya yeni bir pencere açtığında, my .profileveya .bashrc. . ~/.bashrcHer seferinde yazmaya başladım . Bunu otomatik olarak gerçekleştirmenin bir yolu var mı?

Yanıtlar:


150

Evet, .bash_profilesatırınızın sonuna şunu yazın :

. ~/.bashrc

Bu, normalde yalnızca profili işleyeceği durumlarda rc dosyasını otomatik olarak kaynaklar.

bashBelirli dosyaların ne zaman çalıştırılacağına ilişkin kurallar karmaşıktır ve komut satırı argümanları ve ortam değişkenleriyle birlikte başlatılan kabuğun türüne (oturum açma / oturum açma olmayan, etkileşimli ya da değil vb.) Bağlıdır.

Bunları man bashçıktıda görebilirsiniz , sadece bakın INVOCATION- muhtemelen özetlemek ve kodunu çözmek için biraz zamana ihtiyacınız olacak :-)


2
Bu çözümle ilgili sorun, bazı sistemlerde .bashrc'nin .bash_profile'ı çağırmasıdır.
Honza 01

1
Kendimi düzeltmeme izin verin: sistemlerde .bashrc'nin .bash_profile çağrısı yoktur, ancak kendiniz yapmadığınızdan emin olmanız gerekir.
Honza 01

1
@Honza, neredeyse her zaman tersi olduğu için bu çok sıra dışı bir kurulum olurdu. Birisi bunu kesinlikle bu şekilde ayarlayabilirdi ama akıl sağlığını sorgulamamız gerekir :-)
paxdiablo

2
Nitekim, bunu bu şekilde yapmayı ayarladığım (ve unuttuğum) ortaya çıktı. Akıl sağlığımı sorgulayabilirsiniz ...;)
Honza

3
Sorunun bu olduğunu düşünmüştüm ....bashrc/.profile is not loaded on new tmux session (or window) — why?
dylnmc

17

Bu satırı ~ / .tmux.conf dosyama ekleyerek bash'ı çalıştırmak benim için açıkça çalıştı:

set-option -g default-command "exec /bin/bash"

1
Bu benim için çalıştı! Ancak "exec" kısmına ihtiyacınız yok. Kız kardeşime karşı aşağıdaki satırı eklendi ~/.tmux.conf : set -g default-command "/bin/bash". Teşekkürler dostum.
joker

Ama bunun neden olduğu hakkında bir fikriniz var mı? Ubuntu 16.04'ten 18.04.2'ye yükselttikten sonra aniden bunu fark ettim. Aklıma gelen tek fark bu. Ayrıca, bazı yapılandırmaların bozulduğunu ve bazı yeni sözdizimlerine uymam gerektiğini fark ettim (tmux da güncellendi gibi görünüyor, ancak daha önce doğrulamak için kullandığım tmux sürümünü hatırlamıyorum).
joker

7

Önceki cevaplar çözüm sağladı ancak nedenini açıklamadı. İşte burada.

Bu, Bash başlatma dosyalarıyla ilgilidir. Varsayılan olarak, ~/.bashrcbir kullanılır interaktif olmayan giriş kabuğu. Bir giriş kabuğundan kaynaklanmayacak. Tmux, varsayılan olarak bir oturum açma kabuğu kullanır . Bu nedenle, tmux tarafından başlatılan kabuklar atlar ~/.bashrc.

default-command kabuk komutu

Varsayılan, tmux'adefault-shell seçeneğin değerini kullanarak bir oturum açma kabuğu oluşturmasını söyleyen boş bir dizedir .

Bash için dosyaları başlatma,

  1. oturum açma modu:
    1. /etc/profile
    2. ~/.bash_profile, ~/.bash_login, ~/.profile(Var olan tek birincisi)
  2. etkileşimli giriş dışı :
    1. /etc/bash.bashrc (bazı Linux; Mac OS X'te değil)
    2. ~/.bashrc
  3. etkileşimli olmayan:
    1. içindeki kaynak dosya $BASH_ENV

Garip etkileşimli, giriş dışı yükleme gereksinimi, diğer durumlarda da insanların kafasını karıştırır. En iyi çözüm , yükleme gereksinimini yalnızca etkileşimli~/.bashrc olarak değiştirmektir; bu, Ubuntu gibi bazı dağıtımların yaptığı gibi.

# 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

Arzu ettiğiniz çözüm bu olmalıdır. Ve her Bash kullanıcısının bunu profilde kurmasını tavsiye ederim.

Referanslar



1

Benim için işe yarayan çözüm şudur:

  • İçinde .bash_profileyoksa bir dosya oluşturun~
  • Sonunda .bash_profileput source ~/.bashrcveyasource ~/.profile
  • Tmux'u yeniden başlatın.

Sorun şimdi çözülmelidir.


0

Aynı sorunu yaşadım ve şu ana kadar çözümler benim için işe yaramadı. Benim için işe yarayan çözüm burada bulunabilir .

Kısacası, tmuxwindows / sessions , ~/.profilebaşladığında diğer dosyalar arasında bir arama yapan bir giriş kabuğu kullanır.

Ne istediğim her yeni başlamak zsh sahip olmaktı tmuxben koymak böylece pencerenin exec zshSesimin altındaki ~/.profile.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.