LC_CTYPEがオートコンプリートを破る:この問題の原因は何ですか?


12

何らかの理由で今日、ターミナルでタブを押すたびに、これが表示されます:

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

Display all 150 possibilities? (y or n)

この特定のエラーは、入力してcatからTABを押すと発生します。設定など何も変更しませんでした。誰が何が起こっているのか知っていますか?


であるen_CA(つまり、カナダ英語)は、あなたがあることが予想ロケール?
ジル 'SO-悪であるのをやめる'

2
localeコマンドの出力を投稿できますか?
ペンギン359

2
それen_CAが有効なロケールであると確信しています(つまり、両方がシステム上に存在し、localedef同様のロケール生成ツールによって生成されているか、または類似のロケール生成ツールによって生成されています)。

正しい答えが必要な場合は、@ penguin359からの質問に答えて、システムにどのように接続されているかを伝えてください(コンソールで直接またはリモートでsshまたはを使用してくださいputty
dan

回答:


5

あなたのbash_completionが何かを引き起こしているのではないかと思います。以下を実行して、bashの完了を一時的にクリアしてみてください(終了するまで)。

complete -r

それがそれをクリアする場合、それはbash補完を備えたものであり、そうでなければまだbashビルトインの1つである可能性があります


このソリューションを最後に試したのは、他の人が長年にわたって続いてきた問題に対するより適切なソリューションのように思えたからです。しかし、これはうまくいきました。
不愉快な猫

5

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

ローカルマシンで/ etc / ssh / ssh_configファイルを編集し、SendEnv行にコメントを付けました

#SendEnv LANG LC_*

リモートコンピューターで警告なしでタブ補完が機能するようになりました

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


4

私は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行目を追加しました。)再ログイン後、警告は消えました。


3
LC_CTYPE有効な値になるように修正しました。必要ありませんLANG(実際、私はそれをお勧めしません)。を実行すると、システム上の有効なロケール名を確認できますlocale -a。Ubuntuで、実行sudo localegen xx_YYしてxx_YYロケールを生成します(生成できる場合)。
ジル「SO-悪であるのをやめる」

1

bashコマンドのオートコンプリートでTabキーを押したときに、次のようなエラー/警告メッセージが表示される場合:

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

解決策は次のとおりです。

  1. 必要なロケールをインストールします。私の場合、これは「ID」です。

    sudo apt-get install language-pack-id
  2. ロケールを再構成します。

    sudo dpkg-reconfigure locales

これで、bash Tabの補完がうまく機能するはずです。:-)

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


0

私は同じ問題を抱えていました。ここでいくつかの解決策を試しましたがlocale-gen、実行しようとすると、システムはコマンドを見つけることができないと言いました。これはlocales、私がインストールしていないパッケージの一部であることがわかりました。だから、私はそれをインストールし、走らせlocales-gen、そして今ではうまくいく!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.