LC_CTYPE がオートコンプリートを停止します。この問題の原因は何ですか?

LC_CTYPE がオートコンプリートを停止します。この問題の原因は何ですか?

何らかの理由で今日はターミナルでタブをクリックするたびに次のように表示されます。

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

Display all 150 possibilities? (y or n)

この特別な状況は、入力してTABキーを押すと発生しますcat。私は設定や何も変更したことがありません。何が起こっているのか知っている人はいますか?

答え1

私はあなたのbash_completionのためにこれが起こったと思います。次の手順を実行して、一時的に(終了するまで)bashを消去します。

complete -r

それが消去されたらそれはbashがすることであり、そうでなければそれはおそらくbash組み込み機能の1つです。

答え2

SSHを介してリモートサーバーに接続するときに同様の問題が発生しました(oh-my-zshをローカルにインストールした後、これが関連しているかどうかはわかりません)。

この問題を解決するために、ローカルコンピュータでファイルを編集し、/etc/ssh/ssh_configSendEnv行をコメントアウトしました。

#SendEnv LANG LC_*

これで、タブの完成はリモートコンピュータで警告なしに機能します。

bash: 警告: setlocale: LC_CTYPE: ロケールを変更できません。

答え3

私のUbuntuサーバー(FlexiScale)で同様の問題があり、しばらくの間解決策を検索しましたが、適切なものが見つかりませんでした。私がしたことが「正しい」方法であるかどうかはわかりませんが、うまくいくようです。

私が見る警告は次のとおりです。

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

ロケールが最新であることを確認するために、次のことを行いました(必要かどうかわからない)。

# locale-gen --purge

locale私のシステムに表示されている内容が私には適していないため、次のようにLC_CTYPE="UTF-8"変更しました。/etc/default/locale

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

(2行目を追加しました。)もう一度ログインすると、警告ウィンドウが消えました。

答え4

私も同じ問題に直面しました。ここでいくつかの回避策を試しましたが、実行しようとすると、locale-genシステムがコマンドを見つけることができないというメッセージが表示されます。わかると、locales私がインストールしていないパッケージの一部でした。だからインストールして実行したら、locales-gen今動作します!

関連情報