LC_CTYPE การเติมข้อความอัตโนมัติผิดพลาด: สาเหตุของปัญหานี้คืออะไร


12

ด้วยเหตุผลบางอย่างในวันนี้ทุกครั้งที่ฉันกดแท็บในเทอร์มินัลสิ่งนี้จะปรากฏขึ้น:

cat bash: warning: setlocale: LC_CTYPE: cannot change locale (en_CA)

Display all 150 possibilities? (y or n)

สิ่งนี้เกิดขึ้นเมื่อฉันพิมพ์catจากนั้นกด TAB ฉันไม่เคยเปลี่ยนการตั้งค่าหรืออะไรเลย ใครรู้ว่าเกิดอะไรขึ้น


คือen_CA(คือภาษาอังกฤษแคนาดา) สถานที่ที่คุณคาดว่าจะอยู่หรือไม่?
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

2
คุณสามารถโพสต์ผลลัพธ์ของlocaleคำสั่งได้หรือไม่
penguin359

2
คุณแน่ใจหรือไม่ว่าen_CAเป็นสถานที่ที่ถูกต้อง (นั่นคือทั้งสองมีอยู่ในระบบของคุณและถูกสร้างขึ้นโดยlocaledefหรือเครื่องมือสร้างสถานที่ที่คล้ายกัน)

หากคุณต้องการคำตอบที่ถูกต้องโปรดตอบคำถามจาก @ penguin359 และบอกได้ว่าคุณกำลังเชื่อมต่อในระบบของคุณ (โดยตรงบนคอนโซลหรือระยะไกลด้วยsshหรือputty.
แดน

คำตอบ:


5

ฉันมีลางสังหรณ์ว่าสิ่งที่ bash_completion ของคุณทำให้สิ่งนี้เกิดขึ้น ลองล้างข้อมูลการทุบตีของคุณเป็นการชั่วคราว (จนกว่าคุณจะออก) โดยทำดังนี้

complete -r

ถ้าล้างแล้วมันก็เป็นสิ่งที่มีการทุบตีเสร็จถ้าไม่มันก็ยังคงเป็นหนึ่งในตัวทุบตี


พยายามแก้ปัญหานี้ครั้งสุดท้ายเพราะคนอื่น ๆ ดูเหมือนจะเป็นทางออกที่เหมาะสมกว่าสำหรับปัญหาที่ยังคงมีอยู่มานาน แต่นี่เป็นวิธีที่ได้ผล
Cat Unfun

5

ปัญหาที่คล้ายกันเมื่อเชื่อมต่อผ่าน SSH กับเซิร์ฟเวอร์ระยะไกล (หลังจากติดตั้ง oh-my-zsh ในเครื่องของฉันแล้ว แต่ฉันไม่แน่ใจว่าเกี่ยวข้องกัน) เพื่อแก้ไข

บนเครื่องโลคัลของฉันฉันแก้ไขไฟล์ / etc / ssh / ssh_config แสดงความคิดเห็นในบรรทัด SendEnv

#SendEnv LANG LC_*

การเติมแท็บเสร็จสมบูรณ์ในขณะนี้สามารถทำงานได้โดยไม่มีการเตือนบนเครื่องระยะไกล

bash: คำเตือน: setlocale: LC_CTYPE: ไม่สามารถเปลี่ยนภาษาได้


4

ฉันมีปัญหาที่คล้ายกันในเซิร์ฟเวอร์ ubuntu ของฉัน (FlexiScale) และค้นหาวิธีแก้ปัญหาในขณะที่ แต่ไม่สามารถหาสิ่งที่เหมาะสม ... ยังไม่แน่ใจว่าสิ่งที่ฉันทำคือ "วิธีที่ถูกต้อง" แต่ดูเหมือนว่าจะทำงาน

คำเตือนที่ฉันเห็นคือ:

bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

เพื่อให้แน่ใจว่าสถานที่นั้นเป็นที่ทันสมัยฉันได้ทำสิ่งนี้ (ไม่แน่ใจว่านี่เป็นสิ่งที่จำเป็น):

# locale-gen --purge

localeในระบบของฉันแสดงLC_CTYPE="UTF-8"ซึ่งไม่ถูกต้องสำหรับฉันดังนั้นฉันจึงเปลี่ยน/etc/default/localeเป็นดังนี้:

LANG="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"

(ฉันได้เพิ่มบรรทัดที่สอง) หลังจากล็อกอินอีกครั้งคำเตือนก็หายไป


3
แก้ไขLC_CTYPEให้เป็นค่าที่ถูกต้องมัน คุณไม่ต้องการLANG(และอันที่จริงฉันแนะนำให้ใช้ ) locale -aคุณสามารถดูชื่อสถานที่ที่ถูกต้องในระบบของคุณโดยใช้ บน Ubuntu ให้รันsudo localegen xx_YYเพื่อสร้างxx_YYโลแคล (สมมติว่าสามารถสร้างได้)
Gilles 'หยุดความชั่วร้าย'

1

หากคุณได้รับข้อความแสดงข้อผิดพลาด / คำเตือนคล้ายกับสิ่งนี้เมื่อกด Tab เพื่อเติมคำสั่ง bash อัตโนมัติ:

bash: warning: setlocale: LC_CTYPE: cannot change locale (id_ID.UTF-8)

ทางออกคือ:

  1. ติดตั้งสถานที่ที่ต้องการ ในกรณีของฉันนี่คือ "id":

    sudo apt-get install language-pack-id
  2. กำหนดค่าตำแหน่งที่ตั้งใหม่:

    sudo dpkg-reconfigure locales

ตอนนี้ทุบตีแท็บเสร็จควรจะทำงานได้ดี :-)

แหล่งที่มา: http://ubuntucomputing.blogspot.com/2011/12/how-to-fix-error-bash-warning-setlocale.html


0

ฉันมีปัญหาเดียวกัน ฉันลองใช้วิธีแก้ไขปัญหาบางอย่างที่นี่ แต่เมื่อฉันพยายามเรียกใช้locale-genระบบของฉันบอกว่าไม่พบคำสั่ง ปรากฎว่าเป็นส่วนหนึ่งของlocalesแพ็คเกจที่ฉันไม่ได้ติดตั้ง ดังนั้นฉันจึงติดตั้งวิ่งlocales-genและตอนนี้ใช้งานได้!


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