私はgnomeを実行するためにzshとgdmを使用しています。しばらく前に変数が正しく設定されていないことがわかりました。たとえば、LANG / LC_ALLは正しくありません(""
代わりにen_GB.UTF-8
)。
と.zshrc
に分けてみましょう。後者は環境変数を設定しましたが、セッションが開始される前に変数をどのように設定しますか?いくつかのオプション(、、)を試しましたが、何も機能しないようです。.zshrc
.profile
.xinitrc
.xsessionrc
編集する明確にするために - 私は使用.profile
しました手動ソースを明らかにしてください.zshrc
。とにかく問題は変わりません。
答え1
簡単な方法は、タイムマシンを発明し、シェルの起動ファイルを設計したさまざまな人を訪問し、3つを明確に区別するように言うことです。
- 環境変数などのセッション設定
- セッションの開始、つまりコマンドラインシェルまたはウィンドウマネージャを起動する
startx
。 - エイリアス、プロンプト、キーバインディングなどのシェル初期化。
移植可能な方法でセッションとシェルの精度を得ることはそれほど難しくありません。ログイン時に初期化は.profile
(or .zprofile
、or)に入り、シェル初期化はor.login
に入ります。私は前に約文を書いたことがある。.bashrc
.zshrc
.bash_profile
、zshと他のシェル、移植性に関する追加情報(主にbashに関するもの)、読者の詳細.profile
。
残りの問題は、セッション設定とセッション開始を区別することです。ほとんどの場合、~/.profile
これはログイン時に実行され、両方を実行できますが、例外があります。
- ログインシェルが(t)cshまたはzshであり、
~/.login
ソース~/.zprofile
が~/.profile
.bash~/.bash_profile
ではない場合も同様です。~/.profile
~/.bash_profile
- ログインした場合ディスプレイマネージャ(xdm、gdm、kdm、...)、
~/.profile
読み取るかどうかは、プログラムのバージョン、ディストリビューション(Linuxまたはその他)、および選択したセッションの種類によって異なります。- セッションを開始するためにディスプレイマネージャを使用している場合は、
.profile
環境変数を設定する必要がありますが、セッション(ウィンドウマネージャなど)を起動しないでください。 - X セッションの既存の構成ファイルは、
~/.xsession
セッションのセットアップとセッションの開始を実行します。したがって、ファイルは本質的に. ~/.xsession; . ~/.xinitrc
、一部のデプロイメントソースは~/.profile
以前でした~/.xsession
。~/.xsession
- セッションマネージャは、環境変数を設定する独自の方法を持つことができます。 (これは設定ファイルを介して、またはログイン時にセッションの種類を選択して選択したデスクトップ環境のオプション部分です。ユーザーの下で実行されているディスプレイマネージャが提供するセッション起動スクリプトと混同しないでください。システム範囲の選択はい、めちゃくちゃです。)
- セッションを開始するためにディスプレイマネージャを使用している場合は、
要約すると、~/.profile
環境変数の位置が正確です。読み取らない場合は、そこからインポートするか~/.xsession
(そしてそこでXプログラムを実行してください)、システム固有の方法を見つけてください(これはディストリビューション、ディスプレイマネージャ(存在する場合)、セッションの種類によって異なります)(ディスプレイマネージャがある場合)、およびデスクトップ環境またはセッションマネージャも含まれます。
答え2
Gentooのドキュメントに記事があります。Gentoo Linuxローカライゼーションガイド。第3章ロケール設定についてです。
ほとんどの場合、ユーザーはグローバルにLANG変数のみを設定します。この例は、Unicode ドイツ語のロケールについてです。
コードリスト3.1:デフォルトシステムロケールの設定
/etc/env.d/02locale
LANG="en_GB.UTF-8"
私のGentooではLANG
このファイルが設定されており、すべてがうまくいきます...
pbm@tauri ~ $ cat /etc/env.d/02locale
LANG="pl_PL.UTF-8"
pbm@tauri ~ $ locale
LANG=pl_PL.UTF-8
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=