LC_CTYPE rottura del completamento automatico: qual è la causa di questo problema?


12

Per qualche motivo oggi, ogni volta che premo la scheda nel terminale, questo si presenta:

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

Display all 150 possibilities? (y or n)

Questo particolare accade quando scrivo e catpoi premo TAB. Non ho mai modificato alcuna impostazione o altro. Qualcuno sa cosa sta succedendo?


È en_CA(vale a dire inglese canadese) un locale che ti aspettavi di essere in?
Gilles 'SO- smetti di essere malvagio'

2
puoi pubblicare l'output del localecomando?
penguin359,

2
Sei sicuro che en_CAsia un'impostazione internazionale valida (ovvero, esiste entrambe sul tuo sistema ed è stata generata da localedefuno strumento di generazione delle impostazioni locali simile)?

Se si desidera una risposta corretta, si prega di rispondere alla domanda da @ penguin359 e dire come si è connessi al proprio sistema (direttamente sulla console o in remoto con ssho putty.
dan

Risposte:


5

Ho la sensazione che qualcosa che il tuo bash_completion sta causando questo accada. Prova a cancellare temporaneamente il completamento della bash (fino all'uscita) eseguendo:

complete -r

Se questo lo risolve, allora è qualcosa con il completamento bash, altrimenti potrebbe essere ancora uno dei built-in bash


Ho provato questa soluzione per ultima, perché le altre sembravano una soluzione più appropriata a un problema che si era protratto per anni, ma questa era quella che ha funzionato.
The Unfun Cat

5

Problema simile durante la connessione tramite SSH a un server remoto (dopo aver installato oh-my-zsh sul mio locale, ma non sono sicuro che sia pertinente). Per risolverlo,

Sul mio computer locale, ho modificato il file / etc / ssh / ssh_config, commentando la riga SendEnv

#SendEnv LANG LC_*

Il completamento della scheda ora funziona senza l'avviso sul computer remoto

bash: avviso: setlocale: LC_CTYPE: impossibile modificare le impostazioni locali


4

Ho avuto un problema simile sul mio server Ubuntu (FlexiScale) e ho cercato una soluzione per un po ', ma non sono riuscito a trovare nulla di adatto ... Non so ancora se quello che ho fatto è il "modo giusto", ma sembra funzionare.

L'avvertimento che stavo vedendo era:

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

Per essere sicuro che i locali siano aggiornati, l'ho fatto (non sono sicuro che fosse necessario):

# locale-gen --purge

localesul mio sistema stava mostrando LC_CTYPE="UTF-8"che non mi sembrava giusto, quindi ho cambiato il mio /etc/default/localeaspetto in questo modo:

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

(Ho aggiunto la seconda riga.) Dopo aver effettuato nuovamente il login, gli avvisi erano spariti.


3
La correzione LC_CTYPEper essere un valore valido lo ha fatto. Non è necessario LANG(e in effetti lo sconsiglio ). È possibile visualizzare i nomi delle impostazioni internazionali validi sul proprio sistema eseguendo locale -a. Su Ubuntu, esegui sudo localegen xx_YYper generare la xx_YYlocale (supponendo che possa essere generata).
Gilles 'SO- smetti di essere malvagio' il

1

Se ricevi un messaggio di errore / avviso simile a questo quando premi Tab per il completamento automatico del comando bash:

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

La soluzione è:

  1. Installa le impostazioni internazionali richieste. Nel mio caso questo è "id":

    sudo apt-get install language-pack-id
  2. Riconfigura impostazioni locali:

    sudo dpkg-reconfigure locales

Ora il completamento della scheda bash dovrebbe funzionare bene. :-)

Fonte: http://ubuntucomputing.blogspot.com/2011/12/how-to-fix-error-bash-warning-setlocale.html


0

Avevo lo stesso problema. Avevo provato alcune delle soluzioni qui, ma quando ho provato a eseguire locale-gen, il mio sistema ha detto che non riusciva a trovare il comando. Si scopre che fa parte del localespacchetto che non ho installato. Quindi l'ho installato, eseguito locales-gene ora funziona!


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.