Saya baru saja menginstal CentOS 6 dan setiap kali saya masuk ke sistem melalui SSH jarak jauh, saya mendapatkan kesalahan berikut:
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)
Ketika saya mengetik "lokal" di baris perintah, saya mendapatkan output berikut:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Apa yang bisa menjadi masalah? Bagaimana saya bisa mengatasi masalah ini?
Jawaban:
Di server Anda ssh dari apakah Anda memiliki set lokal melalui variabel lingkungan? Dalam melihat instalasi CentOS 6 saya, satu-satunya lokal yang dapat saya temukan didukung diidentifikasi sebagai
en_US.utf8
(ditemukan menggunakanlocale -a
perintah). Mungkinkah ini masalahnya?Dalam pengujian saya, ketika saya mengatur
LC_ALL
variabel lingkungan keen_US.UTF-8
, ssh'd ke server, output dari perintah lokal saya diatur kePOSIX
dalam kasus saya. Ini sama seperti ketika saya TIDAK mengatur (mis. Tidak disetel)LC_ALL
variabel sebelum ssh'ing.Ketika saya mengatur
LC_ALL
variabel saya keen_US.utf8
atauen_US.utf-8
, ssh'd ke kotak CentOS 6 saya, output lokal sama dengan apa yang ditetapkan pada kotak sumber.Perhatikan saya juga tidak menggunakan topi untuk UTF.
sumber
Selesaikan ini dengan menonaktifkan "Setel variabel lingkungan lokal saat startup" di Terminal Settings> Advanced sesuai screenshot ini.
CATATAN: Jika Anda menggunakan iTerm2, Anda dapat menonaktifkan opsi "Setel variabel lokal secara otomatis" di Preferensi> Profil> Terminal
sumber
unset LC_CTYPE
atauexport LC_CTYPE=en_US.UTF-8
fixup masalah setelah login.Cara sederhana:
Menambahkan
untuk
/etc/sysconfig/i18n
.sumber
Apa yang berhasil bagi saya adalah menambahkan symlink di server CentOS seperti ini:
Setelah Anda melakukan itu perintah seperti pekerjaan ini:
Jika tidak, perintah terakhir ini gagal karena kesalahan ini:
Sekarang, solusi yang lebih sederhana adalah dengan menambahkan baris ini ke / etc / bashrc di server:
sumber
Saya mendapat pesan khusus ini, ketika masuk dari Solaris X ke host Centos.
Masalahnya berasal dari 2 pengaturan:
Kirim variabel lingkungan terkait-lokal SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
Di host sumber saya, pengaturannya diatur seperti ini:
SOURCE # LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESSAGES = fr.UTF-8 =ALL_ALL
Tetapi, seperti yang Anda lihat, LC_MESSAGES, disetel ke fr.UTF-8, yang bukan merupakan opsi pada host tujuan saya.
Masalahnya dipecahkan dengan memaksa pada host sumber saya, pada .bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8
Saya bisa menyelesaikannya dengan meminta dest dest saya untuk tidak mengambil variabel ini dari koneksi ssh apa pun (umumnya, atau dengan membuat file lokal ssh_config untuk pengguna saya)
sumber
Pada sistem Centos 6.2 lokal: Ini tidak membantu:
Ini berhasil:
Saya juga dihapus
locale-archive
di/usr/lib/locale
. Saya tidak tahu apakah ini perlu.sumber
Ini adalah perbaikan saya di masa lalu untuk kesalahan lokal.
Jalankan yang berikut: locale-gen
Kemudian edit /etc/locale.gen. Pastikan yang berikut ini tidak dikommentasikan:
sumber
Dengan Iterm2 , berbeda.
Pergi ke
Iterm2 -> Preferences
, Lalu Pergi keProfiles
tab, dan pilihTerminal
tab dari bawah.Buka
Environment
kategori, dan hapus tanda;Akhirnya, tutup dan mulai sesi baru.
sumber
dan pastikan
LC_ALL="en_US.UTF-8"
ada di atau ditambahkan ke / etc / sysconifg / i18ncontoh konten
sumber
sunting
/etc/sysconfig/i18n
Ubah
LANG="us"
keLANG="en_US"
Simpan dan keluar, keluar dan kembali.
sumber