'Tmux' neden varsayılan olarak oturum açma kabukları olarak yeni pencereler yaratıyor?


26

Yeni bir oturum başlattığınızda tmuxveya çalışan bir oturum içinde yeni bir pencere oluşturduğunuzda, varsayılan davranışı bir kabuk (örn bash.:) bir giriş kabuğu olarak çalıştırmaktır.

Bir oturum açma kabuğunun, yalnızca bir sisteme giriş yaparken ilgilendiğiniz yapılandırma ve prosedürlerin bir rutinini gerçekleştirme amaçlı olduğunu biliyorum . Ancak vakaların çoğunda ( bir giriş kabuğu tmux olarak kullanabilmeniz hariç ), kullanıcının yeni bir pencere açmak istediğinde bunu yapmasının gerçek amacı değildir.

Peki, bunu varsayılan davranış haline getirmenin mantığı tmuxnedir?


Belgelerin konuyla ilgili söylediği tek şey:

default-command  shell-command
        Set the command used for new windows (if not specified when the
        window is created) to shell-command, which may be any sh(1)
        command.  The default is an empty string, which instructs tmux
        to create a login shell using the value of the default-shell
        option.

Yanıtlar:


24

Etkileşimli giriş olmayan kabuk genellikle üst seviye giriş kabuğunuzun dışına çıkmaz, bu nedenle başlattığı herhangi bir tesisin istediği zaman kullanılabilir olmasını beklerler, ancak bu tmux için geçerli değildir:

  • Kabuğunuza giriş yapın -> Giriş komut dosyalarınız çalıştırılır
  • smokin koş, bir şeyler yap, ayrıl
  • üst düzey kabuğundan çık -> çıkış komut dosyaların çalıştırıldı
  • tmux oturumu hala devam ediyor, ancak giriş kabuğunuz tarafından başlatılan herhangi bir özellik şu anda kullanılamıyor
  • tekrar giriş yapın ve başka bir giriş kabuğuna tekrar bağlanın
  • Yeni giriş kabuğu tarafından başlatılan herhangi bir tesis tmux tarafından görünmeyebilir, çünkü hala eski ortamla çalışıyordur (ortamı güncellemek için komutlar olsa da)

Bazıları tmux start login kovanlarına sahip olmanın gereksiz olduğunu düşünebilir, çünkü çoğu kurulumda oturum açma komut dosyası yoktur ve oturum açma komut dosyaları sadece bazı ortam değişkenlerini ayarlar.

Ayrıca, oturum açma komut dosyalarınızdaki ortam değişkenlerinize dizeler eklerseniz (bunun gibi: PATH = $ PATH: / some / other / path) ve bunlar aynı işlem hiyerarşisinde birden fazla kez çalıştırılır ve kopyalar çıkarsınız. en can sıkıcı.

Ama yine de varsayılanın mantıklı olduğunu düşünme eğilimindeyim.

Ayrıca bakınız: http://openbsd-archive.7691.n7.nabble.com/tmux-and-login-shells-td170948.html


2
Cevabınız ve bağlantı için teşekkür ederiz! exec shSonunda birlikte yaşayabileceğimi düşünüyorum ... (bunu hiç düşünmemiştim.)
leogama

3
Eğer tmux bir giriş kabuğu çıkarmazsa kırılabilecek somut örneklere sahip misiniz? Bunu varsayılan olarak yapmayı düşünüyorum, ancak tanı konması zor sorunlara rastlamak istemiyorum.
Carl Patenaude Poulin
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.