LC_CTYPE phá vỡ tự động hoàn thành: nguyên nhân của vấn đề này là gì?


12

Vì một số lý do ngày hôm nay, mỗi khi tôi nhấn tab trong thiết bị đầu cuối, điều này sẽ hiển thị:

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

Display all 150 possibilities? (y or n)

Điều này đặc biệt xảy ra khi tôi gõ catrồi nhấn TAB. Tôi không bao giờ thay đổi bất kỳ thiết lập hoặc bất cứ điều gì. Có ai biết chuyện gì đang xảy ra không?


Có phải en_CA(tức là tiếng Anh Canada) là một địa phương mà bạn dự kiến ​​sẽ ở?
Gilles 'SO- ngừng trở nên xấu xa'

2
bạn có thể gửi đầu ra của localelệnh?
chim cánh cụt359

2
Bạn có chắc chắn đó en_CAlà một miền địa phương hợp lệ (nghĩa là cả hai đều tồn tại trên hệ thống của bạn và đã được tạo bởi localedefhoặc một số công cụ tạo miền địa phương tương tự)?

Nếu bạn muốn có câu trả lời chính xác, vui lòng trả lời câu hỏi từ @ penguin359 và cho biết cách bạn được kết nối trên hệ thống của mình (trực tiếp trên bảng điều khiển hoặc từ xa với sshhoặc putty.
dan

Câu trả lời:


5

Tôi có linh cảm rằng một cái gì đó bash_completion của bạn đang gây ra điều này xảy ra. Hãy thử xóa hoàn thành bash của bạn tạm thời (cho đến khi bạn thoát) bằng cách thực hiện:

complete -r

Nếu điều đó xóa nó đi thì đó là thứ gì đó đã hoàn thành bash, nếu không nó vẫn có thể là một trong những bash tích hợp


Đã thử giải pháp này lần cuối, bởi vì những giải pháp khác có vẻ như là một giải pháp phù hợp hơn cho một vấn đề tồn tại lâu nay, nhưng đây là giải pháp hiệu quả.
Mèo Unun

5

Vấn đề tương tự khi kết nối qua SSH với một máy chủ từ xa (sau khi đã cài đặt oh-my-zsh trên máy cục bộ của tôi, nhưng tôi không chắc điều đó có liên quan). Để sửa chữa nó,

Trên máy cục bộ của mình, tôi đã chỉnh sửa tệp / etc / ssh / ssh_config, nhận xét dòng SendEnv

#SendEnv LANG LC_*

Hoàn thành tab bây giờ hoạt động mà không có cảnh báo trên máy từ xa

bash: cảnh báo: setlocale: LC_CTYPE: không thể thay đổi ngôn ngữ


4

Tôi đã gặp vấn đề tương tự trên máy chủ Ubuntu (FlexiScale) của mình và đã tìm kiếm giải pháp trong một thời gian nhưng không thể tìm thấy bất cứ điều gì phù hợp ... Vẫn không chắc liệu những gì tôi đã làm là "đúng cách", nhưng có vẻ như nó hoạt động.

Cảnh báo tôi đang thấy là:

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

Để đảm bảo các địa phương được cập nhật, tôi đã làm điều này (không chắc đây có phải là không cần thiết không):

# locale-gen --purge

localetrên hệ thống của tôi đang hiển thị LC_CTYPE="UTF-8"cái nào không phù hợp với tôi, vì vậy tôi đã thay đổi /etc/default/localegiống như thế này:

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

(Tôi đã thêm dòng thứ hai.) Sau khi đăng nhập lại, các cảnh báo đã biến mất.


3
Sửa chữa LC_CTYPElà một giá trị hợp lệ đã làm điều đó. Bạn không cần LANG(và thực tế tôi khuyên bạn nên chống lại nó ). Bạn có thể thấy tên miền địa phương hợp lệ trên hệ thống của mình bằng cách chạy locale -a. Trên Ubuntu, hãy chạy sudo localegen xx_YYđể tạo xx_YYmiền địa phương (giả sử nó có thể được tạo).
Gilles 'SO- ngừng trở nên xấu xa'

1

Nếu bạn nhận được thông báo lỗi / cảnh báo tương tự như thế này khi nhấn Tab để tự động hoàn thành lệnh bash:

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

Giải pháp là:

  1. Cài đặt ngôn ngữ yêu cầu. Trong trường hợp của tôi đây là "id":

    sudo apt-get install language-pack-id
  2. Cấu hình lại các địa điểm:

    sudo dpkg-reconfigure locales

Bây giờ bash Tab hoàn thành nên hoạt động tốt. :-)

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


0

Tôi đã có cùng một vấn đề. Tôi đã thử một số giải pháp ở đây, nhưng khi tôi cố chạy locale-gen, hệ thống của tôi nói rằng nó không thể tìm thấy lệnh. Hóa ra đó là một phần của localesgói mà tôi chưa cài đặt. Vì vậy, tôi đã cài đặt nó, chạy locales-gen, và bây giờ nó hoạt động!


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.