環境を正しく設定してください。

環境を正しく設定してください。

私は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_profilezshと他のシェル移植性に関する追加情報(主に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=

関連情報