Gnome-Terminal รายงาน $ TERM ว่าเป็น "xterm"


21

ในการติดตั้ง Ubuntu 12.10 ใหม่ทั้งหมดค่าเริ่มต้นของ gnome-terminal กำลังรายงาน $ TERM เป็น xterm ซึ่งควรจะรายงาน xterm-256color วิธีที่ดีที่สุดในการเปลี่ยนแปลงสิ่งนี้คืออะไร? ฉันกำลังหลีกเลี่ยงการใส่สิ่งนี้ลงใน. bashrc ของฉันเพราะนั่นเป็นเพียงการขอปัญหา


2
สนใจที่จะอธิบายว่าทำไม xterm ผิด Afaik พวกเราทุกคนมี xterm นอกจากนั้นยังต้องอธิบายด้วยว่าเหตุใดการวางสิ่งนี้ลงใน bashrc จึงเป็นการถามถึงปัญหา
Rinzwind

4
xtermผิดเพราะแอพพลิเคชั่นส่วนใหญ่จะไม่ทำงานในโหมด 256 สีเว้นแต่ว่ามันจะ( xterm-256colorหรือscreen-256colorเป็นกลุ่มและ tmux เป็นแอพหลักที่ฉันสนใจ) เช่น @Freddy ฉันไม่ต้องการตั้งค่าเหล่านี้ในโปรไฟล์เชลล์ของฉันเพราะฉันอาจเชื่อมต่อจากประเภทเทอร์มินัลที่แตกต่างกับ SSH และเพราะมันเป็นงานของเทอร์มินัลอีมูเลเตอร์ในการตั้งค่านี้ ฉันประหลาดใจที่ gnome-terminal ไม่ได้มีการจำลองหลายอย่าง
Jim Stewart

3
VTE-0.40 (ซึ่งอาจจะปรากฏใน Ubuntu 15.10) xterm-256colorsการเปลี่ยนแปลงเริ่มต้นที่
egmont

คำตอบ:


17

~/.bashrcคุณได้รับคำแนะนำที่ดีที่จะไม่เปลี่ยนสคริปต์เริ่มต้นของคุณเป็นพิเศษ ใด ๆ "ขั้วการตรวจสอบ" ที่ใช้ในปัจจุบัน$TERMหรือ$COLORTERMใน~/.profileเป็นเพียงการคาดเดาและอาจเป็นคุณกล่าวว่าสาเหตุปัญหาเมื่อใช้อาคารอื่น ๆ (พูด, สีโป๊วหรือ xterm) เทอร์มินัลอีมูเลเตอร์ควรถูกตั้งค่า$TERMและสิ่งนี้ไม่ควร เปลี่ยนจากภายในเชลล์

Gnome terminal, AFAIK ไม่ได้เสนอการกำหนดค่าให้เปลี่ยนTERMแต่จะอนุญาตให้คุณเปลี่ยนคำสั่งเริ่มต้นและนั่นคือทั้งหมดที่คุณต้องการ นี่คือเคล็ดลับ:

Profile Preferences => Title and Command => Run a custom command instead of my shell

จากนั้นใช้คำสั่งต่อไปนี้:

env TERM=xterm-256color /bin/bash

เพียงแทนที่/bin/bashด้วยเปลือกที่คุณต้องการถ้ามันแตกต่างกัน และไม่คุณไม่สามารถใช้"$SHELL"ในบรรทัดนั้นสำหรับการตรวจจับอัตโนมัติของเชลล์;) คุณต้องฮาร์ดโค้ดมัน


มีตัวเลือกในการตั้งค่าเหล่านั้นเป็น "เมื่อออกจากคำสั่ง:" ตัวเลือกคือ "ออกจากเทอร์มินัล" "รีสตาร์ทคำสั่ง" และ "เปิดเทอร์มินัลค้างไว้" ฉันควรเลือกแบบใด
Caleb Jay

@CalebJay: แล้วแต่ว่าคุณต้องการตัวเลือกนั้นไม่เกี่ยวข้องกับสีเทอร์มินัล จะทำอย่างไรเมื่อคำสั่งสิ้นสุดเป็นเรื่องของการตั้งค่า
MestreLion

12

สำหรับเชื่อมต่อกับเทอร์มินัลที่ไม่สามารถทำ 256 สีได้

$COLORTERMมันจะดีกว่าที่จะตรวจสอบขั้วโดยเฉพาะกับ มองหา gnome-terminal, xfce4 ขั้ว ฯลฯ และจากนั้นตั้งค่าตัวแปร$TERMxterm-256color

ฉันทำกับ:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi

4
เพิ่งทราบว่า Gnome Terminal ตั้งแต่ 3.13 เป็นต้นไปไม่ได้ตั้งค่าไว้COLORTERMอีกต่อไป
MestreLion

2
สำหรับรุ่นที่ไม่ได้ตั้งค่าอีกต่อไปCOLORTERMคุณสามารถไว้วางใจVTE_VERSIONได้
egmont

6

ในขณะที่มันเป็นความจริงที่ terminfo มี xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap มีเพียง xterm ( /usr/share/vte/termcap/xterm) ดังนั้นการเปลี่ยนแปลง$TERMไม่ควรแนะนำ

ทั้งนี้$TERMไม่ได้ถูกกำหนดโดยคำพังเพยขั้ว แต่ VTE ค่าเริ่มต้นสำหรับตัวแปรสภาพแวดล้อมนั้นสามารถเปลี่ยนแปลงได้ในเวลารวบรวม (ให้ตัวเลือกในการกำหนดค่าสคริปต์) หรือโดยการเรียกใช้vte_pty_set_term()ฟังก์ชั่น เมื่อดูที่แหล่งของ gnome-terminal ฉันเห็นว่าvte_pty_set_termไม่เคยถูกเรียกดังนั้นฉันจึงบอกได้ว่าไม่มีวิธีใดที่จะแก้ไขได้$TERMโดยแก้ไขการตั้งค่าของ gnome-terminal

สิ่งที่คุณต้องทำคือการวางรหัสต่อไปนี้ในของคุณ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi

==เป็นไวยากรณ์ของ bash-only อย่าใช้มันสำหรับตัวอย่างที่ต้องการให้มีแหล่งที่มาsh(ซึ่งเป็นกรณีที่มี~/.profileใน DE) นอกจากนี้ยังไม่จำเป็นต้องใช้ไวยากรณ์ "x $ .. " เนื่องจากคุณต้องระบุการขยาย var
MestreLion

@MestreLion: อย่าลังเลที่จะแก้ไขคำถามของฉัน
Andrea Corbellini

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