LC_CTYPE melanggar autocomplete: apa penyebab masalah ini?

12

Untuk beberapa alasan hari ini, setiap kali saya menekan tab di terminal, ini muncul:

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

Display all 150 possibilities? (y or n)

Yang satu ini terjadi ketika saya mengetik catlalu tekan TAB. Saya tidak pernah mengubah pengaturan atau apa pun. Ada yang tau apa yang terjadi?

Keanehan TAB
sumber
Apakah en_CA(mis. Bahasa Inggris Kanada) tempat Anda diharapkan berada?
Gilles 'SANGAT berhenti menjadi jahat'
2
dapatkah Anda memposting output dari localeperintah?
penguin359
2
Apakah Anda yakin itu en_CAadalah lokal yang valid (yaitu, keduanya ada di sistem Anda, dan telah dibuat oleh localedefatau beberapa alat generasi lokal yang serupa)?
Jika Anda menginginkan jawaban yang benar, harap jawab pertanyaan dari @ penguin359, dan katakan bagaimana Anda terhubung pada sistem Anda (langsung di konsol atau dari jarak jauh dengan sshatau putty.
dan

Jawaban:

5

Saya punya firasat bahwa sesuatu yang bash_completion Anda menyebabkan ini terjadi. Coba hapus penyelesaian bash Anda sementara (sampai Anda keluar) dengan melakukan:

complete -r

Jika itu membersihkannya maka itu adalah sesuatu dengan selesai bash, jika tidak masih mungkin salah satu built-in bash

Gekitsuu
sumber
Mencoba solusi ini terakhir, karena yang lain sepertinya solusi yang lebih tepat untuk masalah yang telah berlangsung lama, tapi ini yang berhasil.
The Unfun Cat
5

Masalah serupa ketika menghubungkan melalui SSH ke server jarak jauh (setelah menginstal oh-my-zsh di lokal saya, tapi saya tidak yakin itu relevan). Untuk memperbaikinya,

Di komputer lokal saya, saya mengedit file / etc / ssh / ssh_config, mengomentari baris SendEnv

#SendEnv LANG LC_*

Penyelesaian tab sekarang berfungsi tanpa peringatan pada mesin jarak jauh

bash: warning: setlocale: LC_CTYPE: tidak dapat mengubah lokal

acw
sumber
4

Saya mempunyai masalah yang sama pada server ubuntu saya (FlexiScale) dan mencari solusi untuk sementara waktu tetapi tidak dapat menemukan sesuatu yang cocok ... Masih tidak yakin apakah yang saya lakukan adalah "cara yang benar", tetapi tampaknya berhasil.

Peringatan yang saya lihat adalah:

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

Untuk memastikan bahwa lokasi setempat terkini, saya melakukan ini (tidak yakin apakah ini perlu):

# locale-gen --purge

localepada sistem saya ditampilkan LC_CTYPE="UTF-8"yang tidak cocok untuk saya, jadi saya mengubah saya /etc/default/localemenjadi seperti ini:

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

(Saya telah menambahkan baris kedua.) Setelah login ulang, peringatan telah hilang.

inkredibl
sumber
3
Memperbaiki LC_CTYPEmenjadi nilai yang valid melakukannya. Anda tidak perlu LANG(dan sebenarnya saya sarankan menentangnya ). Anda dapat melihat nama lokal yang valid di sistem Anda dengan menjalankan locale -a. Di Ubuntu, jalankan sudo localegen xx_YYuntuk menghasilkan xx_YYlokal (dengan asumsi itu dapat dihasilkan).
Gilles 'SANGAT berhenti menjadi jahat'
1

Jika Anda mendapatkan pesan kesalahan / peringatan yang serupa dengan ini ketika tekan Tab untuk pelengkapan otomatis perintah bash:

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

Solusinya adalah:

  1. Instal lokal yang diperlukan. Dalam kasus saya ini adalah "id":

    sudo apt-get install language-pack-id
  2. Konfigurasi ulang lokal:

    sudo dpkg-reconfigure locales

Sekarang, penyelesaian bash Tab seharusnya bekerja dengan baik. :-)

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

Hendy Irawan
sumber
0

Saya mengalami masalah yang sama. Saya telah mencoba beberapa solusi di sini, tetapi ketika saya mencoba untuk menjalankan locale-gen, sistem saya mengatakan tidak dapat menemukan perintah. Ternyata itu adalah bagian dari localespaket yang tidak saya instal. Jadi saya menginstalnya, berlari locales-gen, dan sekarang berfungsi!

pengguna394
sumber
0

Dipecahkan secara permanen dengan membuat file

/etc/default/locale

Dengan konten

LC_ALL="en_US.UTF-8"

Lihat jawaban di github

Langosh
sumber