Không thể đặt LC_CTYPE thành ngôn ngữ mặc định: Không có tệp hoặc thư mục như vậy


54

Tôi có câu hỏi chính xác như thế này nhưng không có giải pháp. Tôi đã thử nhưng nó không hoạt động

Làm cách nào để khắc phục sự cố cục bộ của tôi?

$ locale
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
LANGUAGE=
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=

$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
C.UTF-8
en_US.utf8
POSIX

Đây có phải là do en_US.UTF-8 và en_US.utf8 không khớp?

Làm thế nào để khắc phục?


Bạn đã đọc câu hỏi này trên Ubuntu.com / a / 292912127382 ?
Helio

Câu trả lời:


53

Mở terminal và kích hoạt lệnh dưới đây:

export LC_ALL="en_US.UTF-8"

Điều này hoạt động, nhưng tại sao?
Yu Jiaao

16
Điều này không giải quyết được gì vì biến bị phá hủy vào cuối phiên ..
Etienne Gautier


Giải pháp tuyệt vời trong những từ rất ít. Cười ngả nghiêng!
Redbob

1
Khi xuất var này tôi nhận được:-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
nnyby

36

Vấn đề tương tự này (LC_CTYPE = UTF-8, sai) có thể xảy ra khi bạn đăng nhập qua ssh từ máy Mac sang hộp linux và thiết bị đầu cuối của bạn tự động đặt các biến môi trường. Có một hộp kiểm cho điều đó. Bỏ chọn nó, và bạn tốt để đi. Trong iTerm, nó nằm trong hồ sơ-> Terminal Tab.


2
trong iTerm vô hiệu hóa hộp kiểm "Tùy chọn> Cấu hình> Mặc định> Thiết bị đầu cuối> Môi trường> Tự động đặt biến cục bộ"
ecerulm

1
-1: Trong khi điều này có thể hoạt động, nó cực kỳ xâm lấn. Bạn cũng có khả năng ảnh hưởng đến hành vi của thiết bị đầu cuối cục bộ cũng như hành vi của mọi máy chủ bạn kết nối. Mặc dù kết quả của bạn là đúng, nhưng tốt hơn hết là sử dụng ssh_config để làm cho nó không gửi LC_ * cho các máy chủ được biết là có vấn đề.
Tối đa

3
Bạn có thể vui lòng thêm câu trả lời của riêng mình không, mở rộng nó với nhiều lời giải thích hơn về lý do tại sao điều này có khả năng ảnh hưởng đến hành vi của thiết bị đầu cuối cục bộ của bạn và làm thế nào để nói với ssh_config không gửi LC_ *. Bởi vì bạn chỉ -1 câu trả lời của tôi mà không có lời giải thích thực sự.
raarts

Nếu bạn đang kết nối từ MacOS bằng Terminal, hãy đi tới Cài đặt đầu cuối> Nâng cao và bỏ chọn "Đặt biến môi trường miền địa phương khi khởi động".
javaxian

Điều dường như xảy ra là: trên hệ thống cục bộ của bạn, bạn đã cài đặt một số ngôn ngữ, sau đó bạn ssh sang một hệ thống khác, không cài đặt ngôn ngữ này. Máy khách đầu cuối sẽ cho hệ thống từ xa biết ngôn ngữ của bạn là gì và hệ thống từ xa sẽ không trả lời bằng ngôn ngữ được yêu cầu. Bạn có hai cách để khắc phục điều này: hoặc bạn thay đổi, những gì được yêu cầu hoặc bạn thêm ngôn ngữ được yêu cầu vào hệ thống từ xa (yêu cầu quyền truy cập root).
ngày

27

Tôi đã có vấn đề tương tự và thêm các dòng dưới đây trong /etc/default/localetập tin của tôi :

LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"

Tôi đã nhận được điều này từ bài đăng này: Làm thế nào để tôi khắc phục vấn đề bản địa?


3
Vâng, bằng cách làm như vậy, bạn kết thúc với một cấu hình miền địa phương rất lộn xộn. /etc/environmentkhông dành cho việc thiết lập các địa điểm trong Ubuntu; /etc/default/localeLà. Ngoài ra, trong trường hợp máy tính để bàn, bạn không bao giờ nên đặt LC_ALLliên tục. Cách của bạn sẽ khiến các UI để kiểm soát cài đặt ngôn ngữ / ngôn ngữ trên máy tính để bàn, chẳng hạn như Hỗ trợ ngôn ngữ, vô dụng.
Gunnar Hjalmarsson

Điều này thực sự hoạt động. Sau khi khởi động lại.
translucentCloud

Đăng xuất và đăng nhập, nó sẽ hoạt động
Sand1512

19

chỉ với công việc này cho tôi

sudo dpkg-reconfigure locales
sudo locale-gen

2
Trên thực tế chỉ sudo dpkg-reconfigure localescần thiết vì nó sử dụng locale-gen.
Etienne Gautier

9
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

Tôi đang chạy một ví dụ Vultr gần như sạch sẽ với các vấn đề như trong câu hỏi, nhìn vào các lọ môi trường và mọi thứ đều ổn. Tuy nhiên, sudo dpkg-reconfigure localesđã làm một cái gì đó phải được thiếu. Phiên ssh của tôi bây giờ là OK. Cảm ơn!
Jonas

6

Đầu ra từ localelệnh chỉ ra rằng bạn có dòng không chính xác này trong môi trường của bạn:

LC_CTYPE="UTF-8"

("UTF-8" không phải là tên miền địa phương hợp lệ.)

Nó thường đến từ /etc/default/locale. Vui lòng xóa dòng đó, nếu nó ở đó và đăng nhập lại.

Nếu nó không đến từ đó, nó có thể đến từ cấu hình shell của bạn hoặc nếu bạn đăng nhập từ xa thông qua SSH, từ cấu hình của máy khách.


Tôi có thay đổi LC_CTYPE thành utf8 không?
Mave

@ Lika: Không, điều đó sẽ tệ như vậy. Vì LANG được đặt, bạn chỉ cần xóa toàn bộ dòng bắt đầu bằng LC_CTYPE.
Gunnar Hjalmarsson

Nếu bạn muốn đặt LC_TYPE, bạn cũng nên đặt nó thành "en_US.UTF-8".

Nếu nó xuất phát từ cấu hình của máy khách, bạn có thể thêm miền địa phương trên máy chủ dpkg-reconfigure locales.
Paul Rougieux

5

Lệnh này đã cứu mạng tôi

sudo echo "LC_ALL=en_US.UTF-8" >> /etc/environment
sudo echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
sudo echo "LANG=en_US.UTF-8" > /etc/locale.conf
sudo locale-gen en_US.UTF-8

5
Tập tin được mở trước đó sudo. Các chuyển hướng sẽ không hoạt động trừ khi bạn đã root.
Martin Thornton

3

Tệp / etc / default / locale có thể có các dòng bổ sung (nhưng không cần thiết): Tệp ví dụ có thể trông như thế này:

#  File generated by update-locale
LANG=en_US.UTF-8
LANGUAGE="en_IN:en

Để sắp xếp và tạo thành công và cấu hình lại các địa điểm, hãy xóa hoặc nhận xét tất cả các dòng từ tệp này ngoại trừ:

LANG=en_US.UTF-8

Các tập tin cuối cùng sẽ trông giống như:

#  File generated by update-locale
LANG=en_US.UTF-8
# LANGUAGE="en_IN:en

Sau này, chạy dpkg-reconfigure locales, chọn en_US.UTF-8 khi được nhắc chọn ngôn ngữ và bạn nên đi. Bạn sẽ nhận được một Generation complete.tin nhắn khi quá trình hoàn tất.


0

Tôi đã tự mình gây ra điều này khi di chuyển các tập tin dấu chấm thư mục chính sang một máy mới và tôi không xác định được nguyên nhân trong một thời gian trên tài khoản tìm kiếm các tập tin LC_nhưng không được LOC.

Các ~/.bashrctập tin tôi đã sao chép có như sau:

export LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale

(giá trị cụ thể ở đây là trên tài khoản của các thử nghiệm trước với GNU Guix trên máy cũ; nhưng thực tế có liên quan đơn giản là biến môi trường được đặt thành đường dẫn không hợp lệ.)

Điều này dẫn đến lỗi sau khi chạy các chương trình khác nhau:

Warning: locale not supported by C library, locale unchanged

Và những lỗi này khi chạy locale:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Xóa (hoặc nhận xét) LOCPATHdòng giải quyết vấn đề của tôi.


0

chỉ cần chạy như sau:

sudo apt-get upgrade

nó sẽ tạo tất cả các vị trí, sau đó đặt mặc định thành US:

export LC_ALL="en_US.UTF-8"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.