Linux için Windows Alt Sistemi (WSL) için daha iyi bir terminal deneyimi?


29

Linux için Windows Alt Sistemi terminali (WSL) oldukça azdır. Terminali Windows'ta çok kullanmadım - Genellikle Ubuntu veya OSX kullanıyorum - ama varsayılan terminalin bu kadar kaba olmasına şaşırdım.

Mümkün mü:

  1. WSL'ye bir Windows terminal programı bağlayın veya

  2. Ubuntu terminal programını WSL'den X penceresi olarak başlattınız mı?

Yanıtlar:


26

Ben kişisel olarak yapıyorum: Xc sunucum olarak VcXsrv'yi çoklu pencereler modunda kullanıyorum, sonra xfce4-terminalini başlatıyorum (çünkü gnome-terminalinin nasıl düzeltmeyi öğrenmeyi umursamamayacağım görsel sorunları vardı) ve aniden yazı tipi ve renk desteği ile yetkili bir terminal.

Bunları bashrc'ime eklemem gerektiğini öğrendim ...

export DISPLAY="localhost:0"
export TERM=xterm-256color

Dbus için bu reddit düzeltmesini yapın :

sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf

Ayrıca compiz'i kurdum ve cbwin projesini windows programları xfce4-terminal kabuğumdan çalıştırmak için kullanıyorum.

Bu kurulumdan çok memnunum ve "for-work" makinem Windows olsa bile NeoVim + birçok yerel linux eklentisi kullanıyorum. :)

Ayrıca, Windows'ta Linux'ta Bash'de bir SSH sunucusu başlatmak ve daha sonra Cygwin'den olduğu gibi MinTTY'den de bağlanmak mümkündür.

Not: xfce4-terminalin ağrısız ve ekstra bash cmd penceresi olmadan başlatılmasını sağlamak için, hiçbir şey yapmayan bir program yazdım. Bunu C # 'da yaptım - temel olarak "UseShellExecute" false ve "CreateNoWindow" true değişkenlerini kullanın. Daha sonra bunu görev çubuğuma tuttum ve neredeyse görünüşte.

EDIT: VBScript ile cevap mükemmel. İşte aynı senaryo, ama bir JScript versiyonu ...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);

1
Seçilmiş cevap, kapsamlı ve bana yığınlayıcı bulmamda yardımcı oldu çünkü stackoverflow.com/a/39188790 ; MobaXterm'i> 9.0 olarak güncellediğimde WSL için uygun bir terminal buldum.
David LeBauer 26:16

Herkes meraklı ise, burada reddit gönderinin bağlantısı var hangi the "fix from reddit" for dbuskaldırıldı.
tel

@tel teşekkürler! Aslında nereden geldiğini bilmiyordum ve bağlantıyı ekledim ...
aikeru

"Düzeltmek istemediğiniz görsel sorun" ise, dizinin veya dosya adlarının isteminin bir bölümünü göremiyorsanız, nedeni koyu mavi olmalarıdır. Mor cüceler-terminal arka planında görünmüyorlar. İşin püf noktası koyu mavinin rengini turkuaz'a getirmesidir ve sonra iyi sonuç verir.
WinEunuuchs2Unix

22

Diğer cevaplardaki tüm zımni adımları anlamak biraz zaman aldı, işte adım adım bir özet:

  1. Windows'ta VcXsrv veya XMing'i yükleyin .
  2. Bash for Windows'ta:: terminalini kurun sudo apt-get install xfce4-terminal.
  3. Ekle export DISPLAY=:0Blogunuza .bashrc. (Eklemek .profileveya .bash_profile benim için işe yaramadı ). Bu, xfce4-terminalbash'ten düzgün şekilde başlamanıza izin verecektir , ancak aşağıdaki komuta diktir.
  4. Aşağıdakileri bir kısayolda veya Çalıştır isteminde çalıştırın (yorumlarda @OhJeez tarafından önerilen şekilde):

    powershell -windowstyle hidden -Command "iex \"bash ~ -c 'DISPLAY=:0 xfce4-terminal'\" "
    

Diğer notlar:

  • ~Başlar bashev dizininde, bunu ne olursa olsun dizin başlaması kaldırabilir .vbsyerine, dosya içindedir. Bu yüzden C:\Users\foo, örneğin içine koymak uygun .
  • XMing'in komut dosyasının çalışması için çalışıyor olması gerektiğini unutmayın; Windows ile otomatik olarak başlatmak için bu makaledeki talimatları uygulayabilirsiniz .
  • Emacs 24 (Ubuntu 14.04 ile birlikte verilir) XMing ile çalışmıyor gibi görünüyor; Ben zorunda bu yazı önerildiği üzere yeni bir sürümünü yükleyin .

1
Yardımın için teşekkürler. Senaryoyu çalıştırdığımda hiçbir şey olmuyor gibi görünüyor (Xming sunucusu çalışıyor). Ancak bash açıp çalıştırırsam xfce4-terminaliyi çalışıyor. Ayrıca, eğer bash -l -c xfce4-terminalcmd pencerelerinden kaçarsam bir uyarı alırım Gtk-WARNING **: cannot open display:ve hiçbir şey olmaz. Bu komutların aynı şekilde davranması gerektiğini düşündüğüm için kafam karıştı, herhangi bir tahmin?
rperryng

@rperryng evet - Ayrıca, çirkin bash komut istemi olmadan xfce'yi açmak için bir liner almaya çalışıyorum, ancak henüz şans yok.
Andrew Mao,

1
Kısayol kullanarak xfce4-terminalini başlatmak için en iyi çözüm. Bir titreme var, ancak hiçbir pencere geride C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " kalmıyor: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex '& \"C:\Program Files (x86)\Xming\Xming.exe\" -multiwindow'; iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" "
Çalışmıyorsa Xming'i

@OhJeez, bu komutun inceliklerini işlediğiniz için teşekkürler.
Andrew Mao,

Yüksek çözünürlüklü ekranlar için geçici çözüm. 4 k'lık bir ekranınız varsa, terminalinizde bulanık yazı tipleri olacaktır. Bunu düzeltmek için ihtiyacınız olacak: 1. Xing sourceforge.net/projects/vcxsrv yerine "VcXsrv Windows X Server" kullanın. 2. xserver'ı uyumluluk modunda çalıştırın. Bunu yapmak için ihtiyacınız olacak: VcXsrv kısayoluna sağ fare tuşuyla tıklayın. "Özellikler" i seçin. "Uyumluluk" sekmesinde, "Yüksek DPI ölçeklendirme davranışını geçersiz kıl ..." a karşı bir onay kutusu ayarlayın ve bir sonraki açılır menüde "Uygulama" yı seçin. 3. xfce4-terminal'i çalıştırın ve yazı tipi ayarını değiştirin. Yazı tipini daha büyük olarak değiştirin.
koorchik

10

Yarattığım (ve kullanımı) olarak adlandırılan Linux (WSL) Windows Subsystem için bir açık kaynak terminali wsl-terminali , bu dayanmaktadır minttyve wslbridge.

ekran görüntüsü


Kendinizi tanıtırken dikkatli olun - spam gibi görünebilir. askubuntu.com/help/promotion

2
Kendini terfi
ettirmek

Ve sen bunu kabul etmedin.
muru,

5
Ve lütfen, neden wsl-terminaldaha iyi bir terminal deneyimi sağlayacağına dair bazı detaylar ekleyin .
Cynplytholowazy 20:17

2
Bunu paylaştığın için teşekkür ederim. Eşyalarınız zaten yerleşik terminalden daha iyi çalışıyor - en azından komut satırında satır kaydırma işlemiyle biraz daha iyi başa çıkabilir. Komutun başlangıcına hızlıca gitmek için bir CTRL-A yine de başarısız olur. İnsanların böyle şeyleri teşvik etmesinden mutluyum. İnsanlar sakinleşmeli.
EdH

5

Yeni bir Ubuntu kurulumunda, sadece XMing'i (Windows'ta) sonra (Ubuntu'da) xfce4-terminalini kurdum ve benden sonra export DISPLAY=:0çalıştı.

Windows'un varsayılan konsolundan kurtulmak için bu VBS betiği işi yapar:

WScript.CreateObject("WScript.Shell").run "bash -l -c xfce4-terminal", 0, True

($ DISPLAY ile ayarlanmış olarak .profile.)

edit: Ve betiği pin'able yapmak için, hedef ile bir kısayol oluşturun wscript "C:\path\to\thescript.vbs".


VBS çalışıyor gibi gözüküyor, ancak terminal penceresi hemen ardından açık ve kapalı. Çalışmasını nasıl sağlayabilirim?
TCB13

3

Windows'ta:

  • Bash penceresinin sol üst köşesine tıklayın.
  • Açılan menüden 'Özellikler'i seçin.
  • Yazı tipi vb. İstediğiniz seçenekleri ayarlayın (Ubuntu mono yazı tipi bile var!)
  • Özellikleri ayarladıktan sonra mevcut pencereye uygulanacaktır. Bunları varsayılan olarak ayarlamak için pencerenin sol üst kısmına tıklayın ve varsayılanları tıklayın.
  • Tam ekran moduna geçmek için Alt + Enter tuşlarına basabilirsiniz.

Umarım bu yardımcı olur.


Fare desteği eklenmesi dışında Ubuntu'nun (Gnome's) terminaliyle aynı görünüme / kullanıma sahip olduğunu belirtmek isterim. yani: içindeki sütun başlıklarına tıklayabilirsinizhtop
WinEunuuchs2Unix


2

Ekstra bir terminal emülatöründen daha fazlasıdır. Terminal ve komut satırı uygulamalarınızla çalışmak için bir araç kutusu sağlar.

  • Özellikler
  • Windows WSL, CMD, PowerShell ve Cygwin'de Linux ve macOS'u destekler
  • xterm uyumlu
  • Birden fazla sekme ve bölme, istediğiniz şekilde bölme ve döşeme
  • Terminalde görüntüleri göster
  • Unicode desteği
  • Renk emoji
  • Klavye dostu “Komuta Paleti”
  • Yapılandırılabilir anahtar bağlantıları
  • Klavye tabanlı seçimler
  • Kabuk entegrasyonu; 'kare' komut çıktısını izole edebilir ve. (bash, zsh ve balık destekli)
  • Shell entegrasyonunu kullanarak kolay yükleme ve indirme
  • Komut çıkışı yerinde düzenlenebilir. Çok imleçli düzenleme
  • Önceki komut çıktısı yeni komutlar için giriş olarak kullanılabilir
  • İTerm2 ve TextMate temalarını destekler
  • Metin yakınlaştırma

Şimdi bu terminali kullanıyorum, gerçekten istediğim özelliklere sahip. cmd, powershell, bash, balık vb. arasında geçiş yapmanın kolay bir yolu
nelaaro

1

Windows 10'a (ve WSL) yapılan en son güncellemelerden beri her şey "yerel" windows bash konsolu kullanılarak çalışıyor gibi görünüyor. (Ve (in) ünlü 1809 Windows güncellemesinden bahsetmiyorum). Bu, Enterprise sürümünde bile en az 1803 17134.345 yapı için çalışır).

Https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx adresindeki makaleye bakın.

Küçük bir uyarı - gerçekten Windows'ta bash konsolunu kullanmak için bir tane tmux'u başlatmalı - ve Scott'ın blogunda gösterdiği gibi her şey işe yarayacak.


Bu komik! "exec tmux" aslında tüm Windows yerel "bash.exe" terminal sorunlarını çözüyor (yeniden boyutlandırmadan sonra satırları kesiliyor).
Yves Dorfsman

1

Daha modern bir çağ için bir terminal https://eugeny.github.io/terminus/

Terminus, Hyper'dan ağır bir şekilde ilham alan bir terminaldir. Ancak, işleri halletmesi gereken insanlar için tasarlanmıştır.

  • Windows, macOS ve Linux'ta çalışır
  • Tema ve renk şemaları
  • Tamamen yapılandırılabilir kısayollar
  • Çift genişlikli karakterler içeren tam Unicode desteği
  • Hızlı akan çıkışlarda boğulmaz
  • Sekme tamamlama dahil Windows'ta uygun kabuk benzeri deneyim (Clink aracılığıyla)
  • PowerShell (+ Çekirdek), WSL (Windows'ta Bash), Git-Bash, Cygwin, Cmder ve CMD desteği
  • Sekmelerinizi hatırlar
  • Entegre SSH istemcisi ve bağlantı yöneticisi

1

https://hyper.is/

  • Javascript kullanarak geliştirmeyi ve genişletmeyi kolaylaştıran elektrona dayanır.
  • Varsayılan Windows konsolunu hiçbir şekilde kullanmaz.
  • Arka uç kabuk bash, cmd, PowerShell'i seçmenize izin verir.

    the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    if left empty, your system's login shell will be used by default
    
    Windows
    - Make sure to use a full path if the binary name doesn't work
    - Remove `--login` in shellArgs
    
    Bash on Windows
    - Example: `C:\\Windows\\System32\\bash.exe`
    
    PowerShell on Windows
    - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
    shell: 'C:\\Windows\\System32\\bash.exe',enter code here
    

Çok güzel temalar ve eklentiler

plugins: [
    //"hyper-dracula"
    //"hyper-solarized-dark"
    "hyper-material-theme"
],

Bu kılavuzu kullanarak , WLS'imi almayı başardım, bash çok iyi çalışıyordu.


Teşekkürler - ilginç bir projeye benziyor ama yazılım ve WSL için nasıl yapılandırabileceğiniz hakkında daha fazla bilgi verebilir misiniz?
David LeBauer

1
@DavidLeBauer Bu yardımcı olur umarım.
nelaaro

Hiper çok yavaş.
Mithril


0

Aikeru ve n.caillou'nun cevaplarını VBScript / JScript çözümlerinin hiçbiri olarak genişletmek benim için çalıştı.

Call WScript.CreateObject("WScript.Shell").Run("bash.exe -l -c 'DISPLAY=:0.0 xfce4-terminal --working-directory $HOME'", 0, True).

CallRun komutunda parantez kullanıldığında betiğin hazırlanması gerekir , buraya bakın . Ayrıca keneler tam tersi olması gerekiyordu. Ayrıca, xfce4-terminaline ek bir argüman , kullanıcının giriş klasöründeki terminali başlatacaktır. Üzgünüm, bu gerçekten JScript koduyla çalışıyorsa, bu komut dosyası dilleri hakkında hiçbir fikrim yok.

Bu dosyayı vbscript.vbs olarak kaydetme ve bir cmd komut isteminden çalıştırma

wscript vbscript.vbs

daha sonra 2 saniyelik bir gecikmeden sonra bir xfce4-terminal penceresi (XMing veya benzerleri çalışıyorsa) açar. Bunu n.caillou'nun çalışmaları ile önerildiği gibi bir kısayola çevirmek ve kısayolu tıklamak otomatik olarak biraz gecikmeli yeni bir xfce terminal penceresi açacaktır.

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.