このサイトは質問ではなく苦情に近いので、この問題を解決するのに適したサイトではないかもしれませんが、ここにあります。
今日、私はコンピュータをMint 15からDebian 7.6にアップデートしました。これにより、私のコンピュータは、既存のすべてのファイル名がUTF-8ではなくISO-8859-1でエンコードされていると思います。たとえば、「à」を含むファイル名は「à」などで表示されます。
知っていると私のシステムに話す必要がありました。明らかにexport LANG=en_US.UTF-8
.bashrc ファイルを挿入すると、ファイルシステムは UTF-8 を使用します。
問題はなぜですか? 2014年という時代になぜこんなことが必要なのか?明らかにMintのデフォルト値はUTF-8です。 Debian はなぜ違うのですか?私が目的のロケールをインストールしたときen_US.UTF8 UTF8
に指示し、/etc/locale.genはそれが唯一の(コメントされていない)行として含まれていますが、Debianがあいまいで古いデフォルトを使用するのはなぜですか?エクスポート行を編集するには、今後作成するすべての新しいユーザーアカウントに対して.bashrcファイルを編集する必要がありますか?
答え1
これDebian のデフォルトロケール少なくとも1000音の後はUTF-8でエンコードされています(いつ切り替えたのか覚えていません)。したがって、インストール中にデフォルト以外の一部の設定を選択する必要があります。
エクスポートを
LANG=en_US.UTF-8
私の.bashrcファイルに入れます。
それはできません。.bashrc
無効なファイルです。ここで定義されている環境変数は、端末で実行されているプログラムにのみ適用されます。
この環境変数を定義する正しい場所は、システム設定またはユーザー固有の設定/etc/environment
にすることです。~/.pam_environment
両方のファイルログインした状態で読む(すべてのログイン方法を介して)。
特定ロケール変数文字エンコーディングの場合、LC_CTYPE
.settingsを含むLANG
すべての設定があります。LC_COLLATE
驚くべき結果をもたらすかもしれません。を設定するだけですLC_CTYPE
。
LANG
したがって、設定から削除し、.bashrc
そのLC_CTYPE=en_US.utf8
場所(/etc/environment
または)に追加します~/.pam_environment
。
答え2
まず、Mint 15をDebian 7.6にアップデートできることに驚きました。結局、彼らは別の分布です。
私はあなたがヨーロッパにいて、ロケールに関するいくつかの質問に答えたので、DebianはISO 8859.1を使用することを決めたと仮定します。
答え3
エクスポート行を編集するには、今後作成するすべての新しいユーザーアカウントに対して.bashrcファイルを編集する必要がありますか?
この場合、最良の方法はシステム全体のファイルに入れることです。まず、どこかにすでに設定されていることを確認してください。
grep -R LANG /etc
そこから何も変更したくないかもしれません。
ザイルズの答えおそらくこれを設定する最も効率的な場所があるでしょう。しかし、「ログイン時に読む(すべてのログイン方法を介して)」の意味を説明するために、いくつかをここに残しておきます。
ZZ-local.sh
ファイルを作成して保存できます/etc/profile.d
。ユーザーがログインすると、そのファイルはアルファベット順にインポートされるため、前のZZ
内容を上書きする必要があります。ファイルは実行可能であるか、shebangを含める必要はないので、1行だけexport LANG=...
です。
一部のGUIログインディスプレイマネージャいいえ読み取り - たとえば、lightdm(これについて人気のあるものの1つを見つけた可能性があります。lightdm.profile
はinitスクリプトからエクスポートされます)この場合、WRTについて説明したのと同じことを行う必要がありますが、実際には次のことを実行しても問題になりません。grep
$LANG
/etc/profile.d
/etc/X11/Xsession.d
ln -s /etc/profile.d/ZZ-local.sh /etc/X11/Xsession.d/ZZ-local
両方のファイルへのシンボリックリンクを作成します。これは、ソースを2回連続してインポートすることを意味できることに注意してください。設定だけしたら$LANG
大丈夫です。