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(अर्थात कनाडाई अंग्रेजी) एक ऐसा लोकेल है जिसकी आपको उम्मीद थी?
गिलेस एसओ- बुराई को रोकना '

2
क्या आप localeकमांड का आउटपुट पोस्ट कर सकते हैं ?
पेंग्विन 359

2
क्या आप सुनिश्चित हैं कि en_CAयह एक वैध स्थान है (अर्थात, यह दोनों आपके सिस्टम पर मौजूद है, और localedefकुछ इसी तरह के लोकेल मॉडल द्वारा उत्पन्न किया गया है )?

यदि आप एक सही उत्तर चाहते हैं, तो कृपया @ p पेंगुइनin359 से प्रश्न का उत्तर दें, और बताएं कि आप अपने सिस्टम से कैसे जुड़े हैं (सीधे कंसोल पर या दूरस्थ रूप से sshया इसके साथ जुड़ा हुआ है putty
dan

जवाबों:


5

मेरे पास एक कूबड़ है कि आपके bash_completion से कुछ ऐसा हो रहा है। अस्थायी रूप से अपना बैश पूरा होने की कोशिश करें (जब तक आप बाहर न निकलें)

complete -r

यदि वह इसे साफ करता है तो यह बैश पूरा होने के साथ कुछ है, अगर यह अभी भी बैश बिल-इन में से एक नहीं हो सकता है


इस समाधान को अंतिम रूप दिया, क्योंकि दूसरों को एक समस्या का अधिक उपयुक्त समाधान लग रहा था जो उम्र के लिए बनी हुई थी, लेकिन यह वह था जिसने काम किया।
अनफुन कैट

5

इसी तरह की समस्या जब SSH के माध्यम से रिमोट से कनेक्ट हो रही है (अपने लोकल पर ओह-माय-zsh इंस्टॉल करने के बाद, लेकिन मुझे यकीन नहीं है कि यह प्रासंगिक है)। ठीक करना,

अपनी स्थानीय मशीन पर, मैंने SendEnv लाइन पर टिप्पणी करते हुए / etc / ssh / ssh_config फ़ाइल संपादित की

#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। उबंटू पर, लोकेल sudo localegen xx_YYजेनरेट करने के लिए रन करें xx_YY(यह माना जा सकता है कि इसे जेनरेट किया जा सकता है)।
गिल्स एसओ- बुराई को रोकना '

1

यदि आपको बैश कमांड स्वतः पूर्णता के लिए टैब दबाने पर इसके समान त्रुटि / चेतावनी संदेश मिलता है:

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

समाधान है:

  1. आवश्यक स्थान स्थापित करें। मेरे मामले में यह "आईडी" है:

    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, और अब यह काम करता है!


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.