ประสบการณ์ terminal ที่ดีกว่าสำหรับระบบย่อย Windows สำหรับ Linux (WSL)?


29

เทอร์มินัลสำหรับระบบย่อย Windows สำหรับ Linux (WSL) นั้นมีขนาดค่อนข้างเล็ก ฉันไม่ได้ใช้เทอร์มินัลบน Windows เป็นอย่างมาก - โดยทั่วไปฉันใช้ Ubuntu หรือ OSX - แต่ฉันประหลาดใจที่เทอร์มินัลเริ่มต้นเปลือยเปล่า

เป็นไปได้ที่จะ:

  1. เชื่อมต่อโปรแกรมเทอร์มินัล Windows กับ WSL หรือ

  2. เปิดโปรแกรมเทอร์มินัล Ubuntu จาก WSL เป็นหน้าต่าง X หรือไม่?

คำตอบ:


26

ฉันเป็นการส่วนตัวหลัง: ใช้ VcXsrv เป็นเซิร์ฟเวอร์ X ของฉันในโหมด windows หลาย ๆ ตัวจากนั้นเปิด xfce4-terminal (เพราะ gnome-terminal มีปัญหาด้านภาพที่ฉันไม่สนใจที่จะพยายามเรียนรู้วิธีแก้ไข) และทันใดนั้นฉันก็มี เทอร์มินัลที่เชี่ยวชาญพร้อมการสนับสนุนแบบอักษรและสี

ฉันพบว่าฉันต้องการเพิ่มสิ่งเหล่านี้ลงใน bashrc ของฉัน ...

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

ทำการแก้ไขจาก Reddit นี้สำหรับ dbus:

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

ฉันยังติดตั้ง compiz และฉันใช้โครงการ cbwin เพื่อรันโปรแกรม windows จากเชลล์เทอร์มินัล xfce4 ของฉัน

ฉันมีความสุขมากกับการตั้งค่านี้และใช้ NeoVim + ปลั๊กอินลินุกซ์ดั้งเดิมจำนวนมากแม้ว่าเครื่อง "สำหรับการทำงาน" ของฉันต้องเป็น Windows :)

นอกจากนี้ยังเป็นไปได้ที่จะเริ่มต้นเซิร์ฟเวอร์ SSH ใน Bash-on-Linux-on-Windows แล้วเชื่อมต่อกับเซิร์ฟเวอร์เช่นพูดจาก MinTTY เช่นจาก Cygwin

PS: เพื่อให้การเปิดตัว xfce4-terminal ไม่เจ็บปวดและไม่มีหน้าต่าง bash cmd พิเศษฉันเขียนโปรแกรมที่ไม่ทำอะไรเลยนอกจากเริ่มกระบวนการทุบตีด้วยอาร์กิวเมนต์เพื่อเริ่ม xfce4-terminal โดยไม่มีหน้าต่างคอนโซล ฉันทำสิ่งนี้ใน C # - โดยทั่วไปใช้อาร์กิวเมนต์ "UseShellExecute" false และ "CreateNoWindow" จริง จากนั้นฉันก็ตรึงมันไว้ที่ทาสก์บาร์ของฉันและมันก็เกือบจะไร้ประโยชน์

แก้ไข: คำตอบด้วย VBScript นั้นยอดเยี่ยม นี่คือสคริปต์เดียวกัน แต่เป็นเวอร์ชัน JScript ...

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

1
คำตอบที่เลือกเพราะมันครอบคลุมและมันช่วยฉันค้นหาstackoverflow.com/a/39188790 ; ฉันตระหนักว่าการอัปเดต MobaXterm เป็น> 9.0 ทำให้ฉันมีเครื่องปลายทางที่ดีสำหรับ WSL
David LeBauer

หากใครอยากรู้อยากเห็นนี่คือลิงค์ไปยังโพสต์ Redditที่the "fix from reddit" for dbusถูกยกขึ้น
โทร

@tel ขอบคุณ! ที่จริงผมไม่ทราบว่ามาจากที่ไหนและได้เพิ่มการเชื่อมโยง ...
aikeru

หาก "ปัญหาเกี่ยวกับภาพที่คุณไม่สนใจที่จะแก้ไข" คือคุณไม่เห็นส่วนหนึ่งของพรอมต์ของไดเรกทอรีหรือชื่อไฟล์สาเหตุที่เป็นสีน้ำเงิน พวกมันไม่สามารถมองเห็นได้บนพื้นหลังของ gnome-terminal สีม่วง เคล็ดลับคือการแมปสีสีน้ำเงินเข้มถึงเทอร์ควอยซ์จากนั้นก็ทำงานได้ดี
WinEunuuchs2Unix

22

ใช้เวลาสักครู่เพื่อค้นหาขั้นตอนโดยนัยทั้งหมดในคำตอบอื่น ๆ ดังนั้นนี่คือการสรุปทีละขั้นตอน:

  1. บน Windows, ติดตั้งVcXsrvหรือXming
  2. ในทุบตีสำหรับ Windows, sudo apt-get install xfce4-terminalติดตั้งสถานี:
  3. เพิ่มที่คุณexport DISPLAY=:0 .bashrc(การเพิ่ม.profileหรือ.bash_profile ไม่ได้ผลสำหรับฉัน ) สิ่งนี้จะช่วยให้คุณเริ่มต้นxfce4-terminalอย่างถูกต้องจากการทุบตี แต่เป็นมุมฉากถึงคำสั่งด้านล่าง
  4. รันสิ่งต่อไปนี้ในช็อตคัตหรือในพรอมต์เรียกใช้ (ตามที่ @OhJeez แนะนำไว้ในความคิดเห็น):

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

หมายเหตุอื่น ๆ :

  • การ~เริ่มต้นbashในโฮมไดเร็กตอรี่ของคุณคุณสามารถลบมันออกเพื่อเริ่มในไดเรกทอรีใดก็ได้ที่.vbsไฟล์นั้นอยู่แทน C:\Users\fooยกตัวอย่างเช่นมันสะดวกที่จะใส่เข้าไป
  • โปรดทราบว่า XMing ต้องทำงานเพื่อให้สคริปต์ทำงานได้ ในการสั่งซื้อที่จะเริ่มต้นโดยอัตโนมัติด้วย Windows ที่คุณสามารถปฏิบัติตามคำแนะนำในบทความนี้
  • Emacs 24 (รวมอยู่ใน Ubuntu 14.04) ดูเหมือนจะไม่ทำงานกับ XMing ฉันต้องติดตั้งเวอร์ชันที่ใหม่กว่าตามที่แนะนำในโพสต์นี้

1
ขอบคุณสำหรับความช่วยเหลือของคุณ. เมื่อฉันรันสคริปต์ดูเหมือนว่าจะไม่มีอะไรเกิดขึ้น (เซิร์ฟเวอร์ Xming กำลังทำงาน) อย่างไรก็ตามถ้าฉันเปิด bash และใช้xfce4-terminalงานได้ผล นอกจากนี้ถ้าฉันเรียกใช้bash -l -c xfce4-terminalจาก windows cmd ฉันได้รับคำเตือนGtk-WARNING **: cannot open display:และไม่มีอะไรเกิดขึ้น ฉันค่อนข้างสับสนเมื่อฉันคิดว่าคำสั่งเหล่านี้ควรทำงานเหมือนกันเดา ๆ ไหม
เริ่ม

@perryng ใช่ - ฉันยังพยายามที่จะได้รับหนึ่งซับเพื่อเปิด xfce โดยไม่ต้องสั่งทุบตีน่าเกลียดในระหว่าง แต่ยังไม่มีโชค
Andrew Mao

1
ทางออกที่ดีที่สุดสำหรับการเริ่มต้น xfce4-terminal โดยใช้ทางลัด มีการสั่นไหว แต่ไม่มีหน้าต่างเหลืออยู่: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " อีกเวอร์ชันหนึ่งที่จะเริ่ม Xming หากไม่ได้ทำงาน: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'\" "
OhJeez

@OhJeez ดีขอบคุณสำหรับการจัดการกับความซับซ้อนของคำสั่งนั้น
Andrew Mao

วิธีแก้ปัญหาสำหรับการแสดงผลความละเอียดสูง หากคุณมีจอแสดงผลขนาด 4k คุณจะมีแบบอักษรพร่ามัวในเครื่อง ในการแก้ไขปัญหานี้คุณจะต้อง: 1. ใช้ "VcXsrv Windows X Server" แทน Xing sourceforge.net/projects/vcxsrv 2. เรียกใช้ xserver ในโหมดความเข้ากันได้ ในการทำเช่นนี้คุณจะต้อง: คลิกที่ทางลัด VcXsrv ด้วยปุ่มเมาส์ขวา เลือก "คุณสมบัติ" ในแท็บ "ความเข้ากันได้" ตั้งค่าช่องทำเครื่องหมายกับ "แทนที่พฤติกรรมการปรับสเกล DPI สูง ... " และเลือก "แอปพลิเคชัน" ในดรอปดาวน์ถัดไป 3. รัน xfce4-terminal และเปลี่ยนการตั้งค่าแบบอักษร เปลี่ยนแบบอักษรให้ใหญ่ขึ้น
koorchik

10

ฉันสร้าง (และใช้งาน) สถานีเปิดแหล่งที่มาสำหรับ Windows ระบบย่อยสำหรับลินุกซ์ (WSL) เรียกว่าWSL ขั้วมันอยู่บนพื้นฐานและminttywslbridge

ภาพหน้าจอ


ระวังการโปรโมตตนเอง - อาจดูเหมือนว่าเป็นสแปม askubuntu.com/help/promotion

2
โปรโมชั่นด้วยตนเองก็โอเคถ้าคุณรับทราบ
เดวิดเลอบัวเออร์

และคุณยังไม่ได้รับการยอมรับ
muru

5
และโปรดเพิ่มรายละเอียดเกี่ยวกับสาเหตุที่wsl-terminalจะมอบประสบการณ์การใช้งานเครื่องที่ดีขึ้น
Cynplytholowazy

2
ขอบคุณสำหรับการแบ่งปัน ข้อมูลของคุณใช้งานได้ดีกว่าเทอร์มินัลในตัวอย่างน้อยก็สามารถจัดการกับการตัดบรรทัดในบรรทัดคำสั่งได้ดีกว่า CTRL-A เพื่อไปที่จุดเริ่มต้นอย่างรวดเร็วของคำสั่งยังคงล้มเหลว ฉันมีความสุขกับผู้คนที่ส่งเสริมสิ่งต่าง ๆ ด้วยตนเองเช่นนี้ ผู้คนควรสงบสติอารมณ์
EdH

5

ในการติดตั้ง Ubuntu ใหม่ฉันเพิ่งติดตั้ง XMing (ใน Windows) จากนั้น (ใน Ubuntu) xfce4-terminal และหลังจากที่ฉันexport DISPLAY=:0ใช้งานได้

เพื่อกำจัดคอนโซลเริ่มต้นของ Windows สคริปต์ VBS นี้ทำงาน:

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

(ด้วยการตั้งค่า $ DISPLAY ในของคุณ.profile)

แก้ไข: และเพื่อให้ pin'able wscript "C:\path\to\thescript.vbs"สคริปต์สร้างทางลัดที่มีเป้าหมาย


ดูเหมือนว่า VBS จะใช้งานได้อย่างไรก็ตามหน้าต่างเทอร์มินัลจะเปิดและปิดทันที ฉันจะให้มันทำงานต่อไปได้อย่างไร?
TCB13

3

บน Windows:

  • คลิกที่มุมซ้ายบนของหน้าต่างทุบตี
  • ในเมนูที่เปิดขึ้นให้เลือก 'คุณสมบัติ'
  • ตั้งค่าตัวเลือกที่คุณต้องการเช่นแบบอักษรเป็นต้น (แม้กระทั่งแบบอักษรโมโน Ubuntu!)
  • หลังจากตั้งค่าคุณสมบัติจะใช้กับหน้าต่างปัจจุบัน หากต้องการตั้งให้เป็นค่าเริ่มต้นให้คลิกที่มุมบนซ้ายของหน้าต่างแล้วคลิกค่าเริ่มต้น
  • คุณสามารถกด Alt + Enter เพื่อสลับโหมดเต็มหน้าจอ

ฉันหวังว่านี่จะช่วยได้.


ฉันต้องการชี้ให้เห็นว่ามันมีลักษณะ / การใช้งานเหมือนกับเทอร์มินัล (Gnome's) ของ Ubuntu ยกเว้นเพิ่มการรองรับเมาส์ เช่นคุณสามารถคลิกส่วนหัวของคอลัมน์ในhtop
WinEunuuchs2Unix


2

Extratermเป็นมากกว่าตัวจำลองเทอร์มินัล มันมีกล่องเครื่องมือสำหรับทำงานกับเทอร์มินัลและแอปพลิเคชันบรรทัดคำสั่งของคุณ

  • คุณสมบัติ
  • รองรับ Linux และ macOS บน Windows WSL, CMD, PowerShell และ Cygwin
  • รองรับ xterm
  • แท็บและบานหน้าต่างหลายบานแยกและเรียงกระเบื้องตามที่คุณต้องการ
  • แสดงรูปภาพในเทอร์มินัล
  • รองรับ Unicode
  • อีโมจิสี
  • คีย์บอร์ดที่เป็นมิตร“ Command Palette”
  • การเชื่อมโยงคีย์ที่กำหนดค่าได้
  • การเลือกใช้คีย์บอร์ด
  • การบูรณาการเชลล์ สามารถแยกและออกคำสั่ง 'กรอบ' (รองรับ bash, zsh และปลา)
  • อัพโหลดและดาวน์โหลดได้ง่ายโดยใช้การรวมเชลล์
  • เอาต์พุตคำสั่งสามารถแก้ไขได้ การแก้ไขหลายเคอร์เซอร์
  • เอาต์พุตคำสั่งก่อนหน้านี้สามารถใช้เป็นอินพุตสำหรับคำสั่งใหม่
  • รองรับธีม iTerm2 และ TextMate
  • การซูมข้อความ

ตอนนี้ฉันใช้เทอร์มินัลเนื่องจากมีคุณสมบัติที่ฉันต้องการจริงๆ วิธีง่ายๆในการสลับไปมาระหว่าง cmd,
powerhell

1

เนื่องจากการอัปเดตล่าสุดสำหรับ Windows 10 (และ WSL) ทุกอย่างดูเหมือนจะทำงานได้โดยใช้คอนโซล "windows" ทุบตี (และฉันไม่ได้พูดถึงการปรับปรุง (ใน) ที่มีชื่อเสียง 1809 Windows) ทำงานได้แม้ในรุ่น Enterprise อย่างน้อยสำหรับรุ่น 1803 17134.345)

ดูบทความที่https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

ข้อแม้เล็ก ๆ น้อย ๆ - การใช้ bash console ใน Windows ควรเปิด tmux และทุกอย่างจะทำงานตามที่ Scott แสดงในบล็อกของเขา


นี่คือเฮฮา! "exec tmux" จะแก้ปัญหาเทอร์มินัล "bash.exe" ของ Windows ทั้งหมด (ตัดสายแปลก ๆ หลังจากปรับขนาด)
Yves Dorfsman

1

เทอร์มินัลสำหรับอายุที่ทันสมัยกว่าhttps://eugeny.github.io/terminus/

Terminus เป็นเทอร์มินัลแรงบันดาลใจอย่างมากจาก Hyper อย่างไรก็ตามมันถูกออกแบบมาสำหรับผู้ที่ต้องการทำสิ่งต่างๆให้เสร็จ

  • ทำงานบน Windows, macOS และ Linux
  • ชุดรูปแบบและสี
  • ทางลัดที่กำหนดอย่างเต็มที่
  • รองรับ Unicode เต็มรูปแบบรวมถึงอักขระความกว้างสองเท่า
  • ไม่สำลักกับเอาต์พุตที่ไหลเวียนอย่างรวดเร็ว
  • ประสบการณ์การใช้เชลล์อย่างเหมาะสมบน Windows รวมถึงการเติมแท็บ (ผ่าน Clink)
  • PowerShell (+ Core), WSL (Bash บน Windows), Git-Bash, Cygwin, Cmder และ CMD
  • จดจำแท็บของคุณ
  • ไคลเอ็นต์ SSH แบบรวมและเครื่องมือจัดการการเชื่อมต่อ

1

https://hyper.is/

  • มันขึ้นอยู่กับอิเล็กตรอนซึ่งทำให้ง่ายต่อการพัฒนาและขยายโดยใช้จาวาสคริปต์
  • มันไม่ได้ใช้คอนโซล windows เริ่มต้น แต่อย่างใด
  • อนุญาตให้คุณเลือกแบ็คเอนด์เชลล์ bash, cmd, PowerShell

    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
    

ธีมและปลั๊กอินที่ดีมาก

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

การใช้คู่มือนี้ฉันสามารถใช้ WLS ของฉันได้ทุบตีทำงานได้ดีมาก


ขอบคุณ - ดูเหมือนโครงการที่น่าสนใจ แต่คุณสามารถพูดเพิ่มเติมเกี่ยวกับซอฟต์แวร์และวิธีการกำหนดค่าสำหรับ WSL ได้หรือไม่
ดาวิดเลอบัวเออร์

1
@DavidLeBauer ฉันหวังว่าจะช่วย
nelaaro

ไฮเปอร์ช้ามาก
มิ ธ ริล

1

วันนี้คุณได้รับการแนะนำให้ใช้"เทอร์มินัล Windows"ซึ่งเปิดโดย Microsoft

งานสร้างอย่างเป็นทางการสามารถรับได้จาก Windows Store ในช่วงกลางเดือนมิถุนายนปีนี้

แต่คุณสามารถสัมผัสได้โดยใช้รุ่นตัวอย่างด้านล่าง https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/WindowsTerminal_SelfSigned_x86_x64_arm64.7z

หลังจากติดตั้งแล้วผลลัพธ์การทำงานอยู่ด้านล่าง:

pic1

pic2

pic3

pic4


0

การขยายคำตอบของaikeruและn.caillouเนื่องจากทั้ง VBScript / JScript ไม่ได้ทำงานเลยสำหรับฉัน

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

ความต้องการสคริปต์เพื่อต่อท้ายด้วยCallเมื่อใช้วงเล็บในคำสั่งการทำงานให้ดูที่นี่ เห็บยังต้องเป็นรอบทางอื่น ๆ นอกจากนี้อาร์กิวเมนต์เพิ่มเติมของxfce4-terminalจะเริ่ม terminal ในโฟลเดอร์บ้านของผู้ใช้ ขออภัยถ้านี่เป็นโค้ด JScript ที่ใช้งานได้จริงฉันไม่มีความรู้เกี่ยวกับภาษาสคริปต์เหล่านี้

บันทึกสิ่งนี้เป็นไฟล์vbscript.vbsและดำเนินการจากcmd prompt โดย

wscript vbscript.vbs

จากนั้นเปิดหน้าต่างเทอร์มินัล xfce4 (กำหนด XMing หรือเหมือนกันทำงาน) หลังจากหน่วงเวลา 2 วินาที การเปลี่ยนสิ่งนี้ให้เป็นทางลัดตามที่แนะนำโดยผลงานของ n.caillouและการคลิกทางลัดจะทำให้เกิดหน้าต่างเทอร์มินัล xfce ใหม่โดยอัตโนมัติด้วยความล่าช้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.