タグ付けされた質問 「environment-variables」

環境変数に関する質問については、実行中のプロセスの動作とリソースへのアクセスに影響を与える可能性のある一連の動的変数。このタグは、環境変数に関する質問、または実行中のプロセスの動作とリソースへのアクセスにおける変数値の設定または変更の影響から生じる問題に関する質問に使用します。

4
ロケール環境変数を変更するには?
en_US.utf8、et_EE.iso88591、およびru_RU.utf8のローカライズファイルを生成しました。ロケール変数をru_RU.utf8またはen_US.utf8に変更しようとしても、これは効果がありません。 # locale -a C en_US.utf8 et_EE et_EE.iso88591 POSIX ru_RU.utf8 # LC_TIME=ru_RU.utf8 # locale | grep LC_TIME LC_TIME="et_EE.iso88591" # LC_TIME="ru_RU.utf8" # locale | grep LC_TIME LC_TIME="et_EE.iso88591" # ただし、LANG =変数を変更すると、LANGUAGE =およびLC_ALL =以外のすべての変数がLANG =変数の値を取ります。各ロケール変数を個別に変更する方法はありますか?さらに、ロケール変数は通常のシェル変数ではなく、ロケールユーティリティのパラメーターに似ていることを修正できますか?

3
env、setenv、exportと使用する場合の違いは何ですか?
最近、環境変数を設定する3つのオプションがあることに気付きました。 export envVar1=1 setenv envVar2=2 env envVAr3=3 他の方法がある場合は、教えてください。 いつ他を好むべきですか?ガイドラインを提案してください。 シェルの互換性については、どれが最も拡張性がありますか(より多くのシェルの方言をカバーしています)? 私はすでにこの答えに気付いていましたが、質問envと使用設定ガイドラインを拡大したいと思います。

2
/ etc / environmentのエスケープマーク(#)
env変数を追加しています/etc/environmentが、変数値に#記号が含まれているため、文字列がストライプされます。 MYSQL_PWD="something#no" 今、env上記のコードを実行すると、yieldsになりMYSQL_PWD=somethingます。ハッシュをエスケープするにはどうすればよいですか?私はすでに\キャラクターを試しました。

6
非対話型シェルでスクリプトを実行しますか?
スクリプトを実行しているcronジョブがあります。対話型シェル(bashに切り替えられた)を介してスクリプトを実行すると、正常に動作します。スクリプトがcronを介して単独で実行されると、失敗します。 私の推測では、対話型シェルで設定された環境変数の一部を使用していると思われます。スクリプトのトラブルシューティングを行い、これらを削除します。 変更を加えた後、cronでスクリプトをキューに入れて通常どおりに実行できることを知っていますが、コマンドラインからスクリプトを実行する方法はありますが、cronから実行するように指示する方法はありますか?すなわち、非インタラクティブな環境で?


2
スクリプトを使用してブート時にグローバル環境変数を設定し、ログイン前に実行するアプリケーションで使用できるようにする方法は?
ブート時に実行されるサービスがあり、そのサービスではバックグラウンドでbashスクリプトを呼び出して、いくつかの環境変数をエクスポートします。私が抱えている問題は、これらの環境変数がバックグラウンドプロセスの親に送信されていないため、スクリプトの実行が完了するとすぐに消えてしまうことです。 また、スクリプトが実行された後、サービスは別のスクリプトを呼び出して、所有しているアプリケーションを起動します。このアプリケーションは、これらの環境変数にアクセスする必要があります。 私がそれを実行するRHELシステムは、ユーザーが決してログインすることはなく、アプリケーションを起動して起動するだけです。ただし、親プロセス/シェルの環境変数は、実際には子バックグラウンドプロセスシェルでは設定できないことを知っています。 私のサービスにそれらを追加することではなく(私にとっても機能しませんでした)、/etc/environmentまたは.profileまたはそのような何か。 私のサービスでは、環境変数を追加しようとしました(しかし、私がやりたいことではありません): export TEST=192.168.1.1 私は私のサービスでもこれを試しました: TEST=192.168.1.1 export TEST=${TEST} サービスがbashスクリプトを呼び出す方法を変更してみました。 /bin/asdf/script & また、同じシェルで実行するようにスクリプトをソースしようとしました(これはから取得しました)。 . ./bin/asdf/script #I'm very confused why this didn't work また、これは面白そうに見えましたが、私の場合はうまくいきませんでした。

4
シェル変数と環境変数の使用法の違いは何ですか?
実際、コマンドラインからアクセスできる変数には2種類あることを知りませんでした。私が知っているのは、次のような変数を宣言できることです。 foo="my dear friends" bar[0]="one" bar[1]="two" bar[2]="three" または、次のような$記号を使用してアクセスします。 echo $foo echo ${bar[1]} または、次のような組み込み変数を使用します。 echo $PWD PATH=$PATH:"/usr/bin/myProg" さて、シェル変数と環境変数という2つの(少なくとも?)タイプの変数があると聞きました。 2つの異なるタイプを使用する目的は何ですか? 変数がどの型であるかを知るにはどうすればよいですか? それぞれの典型的な使用法は何ですか?

3
XアプリがアクセスできるようにPATHまたはその他の環境変数を設定するにはどうすればよいですか?
KDEが認識できるようにenv変数を設定するにはどうすればよいですか? 非シェル環境(KDE)でどのようにパスを設定しますか? 上記の2つの質問とは異なり、GNOMEでこれを行う方法を知りたいです。さらに良いことに、ウィンドウマネージャーから独立したメソッドがあります。シェル/ターミナルについては、通常編集します~/.bashrc。使用するウィンドウマネージャーに関係なく、すべてのXアプリケーションで環境変数を使用できるように、どこにexportステートメントを配置できますか?

6
bashスクリプト(.bashrcなど)でXセッションを検出する
最近xset b off、.bashrc に置きました。今、私はttyまたはssh経由、つまりXセッション外でログインするとthetがポップアップするエラーに悩まされています。 私が最初に思いついたのは、[[ -z "$SOME_VAR" ]] && xset b off(変数の設定と空のテストは別の質問であることが判明したことです)。しかし、どのSOME_VARが正しいのでしょうか? そこで、ttyのset出力とurxvtのset出力を比較して、どの変数がXに設定されており、ttyにないかを確認しました。予想どおり、非常に多くの違いがありました(自分に関連があると思われるもののみをリストします)。 DESKTOP_SESSION DISPLAY GDMSESSION SESSION_MANAGER WINDOWID WINDOWPATH XAUTHORITY XDG_SESSION_COOKIE XDG_CONFIG_DIRS XDG_DATA_DIRS XDG_MENU_PREFIX Xセッションに参加しているかどうかを検出するためにテストするのに最も適切で普遍的なものはどれですか?できるだけ多くのディストリビューション、プラットフォーム、デスクトップ環境で機能するものはありますか? または、環境変数をテストするよりも良い方法はありますか?

4
複数行の構文を使用してPATHにパスを追加する
私の知る限り、PATH環境変数にパスを追加する通常の方法は、:文字で区切られたパスを連結することです。 たとえば、3つのパスを追加する場合/my/path/1、/my/path/2および/my/path/3、次のようにする必要があります。 PATH=$PATH:/my/path/1:/my/path/2:/my/path/3 読みにくいです。 複数行の構文を使用して変数にパスを定義または追加する方法はありますか?おそらく配列を使用していますか?私はこのようなものを探しています:PATH PATH = $PATH /my/path/1 /my/path/2 /my/path/3 シェル固有の興味深いソリューションがある場合は、zshのソリューションを探しています。

4
PATH変数がbashで設定されている場所の完全なビュー
PATHが設定されているいくつかの場所、/etc/profileまたは.profileホームディレクトリにあるファイルを読みました。 これらはパスが設定されている唯一の場所ですか?私はそれをより良く理解したいです。 で/etc/profile、ファイル、次のコメントが言うように"system-wide .profile file for the Bourne shell"。それは、プロファイルファイルがbashの主要な構成ファイルであることを意味しますか? そのファイルでは、PATH変数がまったく設定されていません。で.profile、ホームディレクトリ内のファイルの行があります: PATH="$HOME/bin:$PATH" それPATHは既に設定された$PATH文字列を$HOME/bin:右に連結しているので、見た目でリセットしていますか?しかし、もしetc/profileおよび~/.profile設定ファイルだけですPATHされた場合$PATH、それはで定義されていない場合はそのコード行でから来ますか/etc/profile? 誰かがPATH変数の広範かつ詳細な説明をお願いします。ありがとう!

1
LD_LIBRARY_PATH変数が環境にないのは正常ですか?
偶然にも、私のDebian JessieにはLD_LIBRARY_PATH変数がありません(正確にprintenv | grep LDは、リンカに関連するものは何も表示されず、何echo "$LD_LIBRARY_PATH"も表示されません)。 これは、xターミナルエミュレータ(setgidによりクリアされる可能性があります)および基本ターミナル(Ctrl+Alt+F1)の場合です。 私はそれLD_LIBRARY_PATH が悪いと思われるかもしれないので、Debianはそれをどういうわけかブロックするかもしれませんが、その一方で/etc/ld.so.conf.d/、に追加されるディレクトリを含むいくつかのファイルがありますLD_LIBRARY_PATH。私のrcファイル(私が知っている)はどれも混乱しませんLD_LIBRARY_PATH。 LD_LIBRARY_PATH変数が表示されないのはなぜですか?

2
一時的に使用するためのクリーンなシェル環境を作成するにはどうすればよいですか?
私は、Unixに焦点を当てた人気のQ&Aサイトで頻繁に回答し、多くの回答でbashシェルを使用した例を提供しています。ただし、これを行うたびに、クリーンな環境を作成するプロセスを手動で実行して、すべての手順が説明され、文書化されていることを確認する必要があります。このプロセスをより簡単にするにはどうすればよいですか?理想的には、1つのコマンドを入力してクリーンな環境を取得し、その一時的な環境の痕跡をすべて完了後に削除することを考えています。

2
環境を正しく設定する
私はgnomeを実行するためにzshとgdmを使用しています。しばらく前に、変数が正しく設定されていないことを発見しました。たとえば、LANG / LC_ALLは(""ではなくen_GB.UTF-8)正しくありません。 私は分割.zshrcに.zshrcして.profile。後者では、環境変数を設定しますが、セッションを開始する前にどのように変数を設定できますか?いくつかの選択肢(.xinitrc、.xsessionrc)を試しましたが、どれも機能していないようです。 編集明確にするために-を使用し.profile、手動でソースしました.zshrc。とにかく質問は変わりません。

1
systemdサービスファイル内でbashパラメーターの展開が機能しないのはなぜですか?
私が使用しようとしていますsystemdのがEnvironmentFile、それがファイルに設定されている場合、コマンドにオプションを追加します。ユニットファイルには次のものがあります。 ExecStart=/usr/bin/bash -c "echo ${PORT:+port is $PORT}" サービスを開始しても何もエコーしません。 以下は期待どおりに機能します。 ExecStart=/usr/bin/bash -c "echo port is $PORT" これは、ファイルが正しく読み取られることを意味します。 パラメーターの置換はコマンドラインでも機能します。 $ PORT=1234 bash -c 'echo ${PORT:+port is $PORT}' port is 1234 私は何が欠けていますか?

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