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

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

1
なぜbashは解析/実行のものも環境変数に入れるのですか?
bash のshellshockバグは、環境変数を介して機能します。正直なところ、次のような機能があることに驚きました。 「env varsによる関数定義の受け渡し」 したがって、この質問は完全に定式化されていない可能性がありますが、この機能が必要になる例またはケースを尋ねることですか? ボーナス。他のシェルzsh、ダッシュなどにもこの機能がありますか?

2
環境変数で関数を定義する機能自体がセキュリティリスクではないのはなぜですか?
私が理解しているように、一般に、環境変数に格納される情報を誰にでも提供しても安全だと考えられています。シェルショックの脆弱性はここでの問題です。これは、bashの新しいインスタンスが起動したときに環境変数内の関数定義の最後のコードが実行され、サーバー上で実行したいコードをだれにも実行させたくないということです。 。関数定義自体は明らかにセキュリティリスクではありませんが、コードを実行するには明示的に呼び出す必要があるため許可されています。 私の質問は、悪意のあるユーザーが悪意のあるコードを一般的なコマンドとして含む関数を単純に定義できずls、スクリプト(または実行されているもの)がいつかこのコマンドを使用することを期待できないのですか? 私が考えていることの例: $ export ls='() { echo "doing bad things..."; }' $ bash -c ls doing bad things...

1
環境変数の場所がなぜそれほど異なるのですか?
Jack Ericksonによる本「ハッキング:悪用の芸術」を読んで、私はSHELLCODEプログラムを悪用するために環境変数のアドレスを概算しようとしています。 getenv("SHELLCODE");場所を取得するために実行するたびに、結果は完全に異なります。 私のシェルから抽出します: > for i in $(seq 10); do ./a.out SHELLCODE; done SHELLCODE is at 0xff9ab3a3 SHELLCODE is at 0xffcdb3a3 SHELLCODE is at 0xffb9a3a3 SHELLCODE is at 0xffa743a3 SHELLCODE is at 0xffdb43a3 SHELLCODE is at 0xfff683a3 SHELLCODE is at 0xffef03a3 SHELLCODE is at 0xffc1c3a3 SHELLCODE is at 0xff85a3a3 …

2
systemd Dockerコンテナーで環境変数を継承する
systemdを実行しているDockerコンテナーがあります。その下のアプリケーションに環境変数を渡したいのですが。 Docker内から(/sbin/initコマンドラインとして)systemdを起動すると、Dockerは変数をsystemdに公開しますが、子サービスには公開しません。systemd.setenv=...コマンドラインに追加すると、変数が渡されます。よりクリーンな解決策を探しています。 /sbin/init開始されたアプリケーションに渡された環境変数を公開するにはどうすればよいですか? % docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged -ti \ -e VAR1=1 motiejus/systemd_fedora20 \ init systemd.setenv=VAR2=2 ... Welcome to Fedora 20 (Heisenbug)! ... [ OK ] Reached target Multi-User System. [root@740690365eb0 ~]# env | grep VAR VAR2=2 VAR1=1コマンドの実行中に表示されることを期待しています。 言い換えれば、systemdはそれに渡された変数を、それが開始する子に渡すことができますか? Dockerfileについては、githubリポジトリを参照してください。

1
bash PATHはどこに設定しましたか?
~/binPATH から削除したい。Linux(Ubuntu)が初めてだった数ヶ月前にセットアップしましたが、どうやって追加したのかわかりません... 下記のすべてのファイルを検索しても何も表示されません。 他にどこに設定することができますか?$HOME/.profilePATHのプレフィックスの後にプリペンドされています$HOME/bin 違いがある場合は、コマンドプロンプトと実行中のスクリプトの両方から同じPATHを取得します。 #!/bin/bash { echo "first dir of PATH is: '${PATH%%:*}'" shopt -s nullglob cat \ /etc/profile \ /etc/bash.bashrc \ /etc/profile.d/*.sh \ $HOME/.bashrc \ $HOME/.bash_aliases \ /etc/bash_completion \ $HOME/.bash_completion* \ $HOME/.profile \ $HOME/.profile_zap \ $HOME/.bash_profile* \ $HOME/.bash_login* \ | sed -rne '/~\/bin/p' } 出力は次のとおりです。 first dir of …

2
〜で個別のLinux環境をセットアップする最良の方法
ほとんどの作業(多くのC / Pythonを含む)を、他の数人と共有する開発サーバーで行います。その結果、私たちは皆、システム管理の雑用を少ししているように見えます(sysadminはありません)。これは問題なく動作する傾向がありますが、パッケージとライブラリのインストールとメンテナンスは面倒です。 最近、自分のホームディレクトリにパッケージをインストールしてビルドするようになっています。このプロセスを形式化/合理化する最良の方法は何ですか?現在、私は単に./configuring、の前に来る--prefixようにパスを設定し、そしてとPYTHONPATHを適切に設定しようとしていますが、これはエラーが発生しやすくなり、痛みを伴います。より「自動化された」方法はありますか?~/usr/binusr/binLD_LIBRARY_PATHC_INCLUDE_PATH

3
環境変数に設定/追加しているファイル、およびそれらの優先順位を見つけることは可能ですか?
一部の環境変数($PATH、$MANPATHおよび友達)は、部分的に異なるソースファイルに設定されています。 特定の環境変数のどの部分がどのファイルからのものかをすばやく収集するためのコマンドまたはメソッドが欲しいと思っています。 私の$ PATHには、例えば、明らかで(に加算)が設定されている.bashrc、/etc/paths、/etc/paths.d/X11...と私はまだ余分に私の中に重複したパス定義を作成した最後の神秘的なファイルを探しています$PATH。 環境変数の原因となっているファイルを手動で特定するには、しばらく時間がかかります。すべてのセッターを追跡するというこの不必要な労力を回避するための便利な方法がなければならないのでしょうか…それとも、これらの線に沿って考えているのは私だけですか?

2
シェルで変数を間接的に展開する
bashシェルで変数を間接的に参照する必要があります。 基本的にmake書いてできることをしたいです$($(var))。 私は${$var}最も簡単な解決策であるものを使用しようとしましたbashが、このエラーが発生します: bash: ${$var}: bad substitution これを行う方法はありますか? 私は何をしようとしています(すべての引数反復処理することで$1、$2、$3反復変数を使用してプログラムに、...)を、私は間接せずにこれを行うことはできません。

3
LD_LIBRARY_PATHは、sudoの後は常に空白
ソフトウェアを手動でインストールしているように見えるたびに、共有ライブラリエラーが発生します。実行するecho $LD_LIBRARY_PATHと、何も表示されません。私はファイルに追加しようとし/usr/local/libましたが、.conf実行され/etc/ld.so.conf.dないようです。 これも機能しません(引用符など): LD_LIBRARY_PATH="/usr/local/lib" export LD_LIBRARY_PATH sudo ldconfig -v 値は一時的に設定されますが、ターミナルウィンドウを終了した場合、値は保持されません。再起動しても何も起こりません。

1
grep:大文字と小文字を区別して検索するGREP_OPTIONSを無視する
私は通常grepで大文字と小文字を区別せずに動作GREP_OPTIONS="--ignore-case --color"する~/.bashrcように設定しました。ただし、実際に大文字と小文字を区別して検索するためにgrepが必要な場合がありますが、manページではこれについてのパラメーターを提案していません。 どうすればこれを達成できますか?

2
シェルスクリプトでユーザーを変更し、環境全体を読み込む
ユーザーを変更し、いくつかのrubyデーモンプロセスを起動する、私たちのupstartスクリプトに問題があります。 以前bash -c "do the business" -l someuserは、-lフラグを使用してログインをエミュレートすることを確認するだけでした。 これは今までうまく機能しており、ルビープロセスは次のエラーをスローしていました:require: no such file to load -- rubygems (LoadError)調査の結果、このエラーはスクリプトをrootユーザーとして実行した場合(つまり、私sudo suまたはupstartで実行した場合)にのみ発生することがわかりました。 最初にパスを手動で設定すると問題が解決するため、これはPATHの問題だと思います。 ユーザーを変更して環境全体をロードする方法はありますか? 私も試してみましたsu user -cとsudo。 テストを簡単にするために、私は「ルート化」(sudo su)して実行していますwhich bundle(バンドルはルビーです)。 ここに私が得るものがあります: sudo -i -u webuser which bundle #=>出力なし su -l webuser -c which bundle #=>出力なし sudo su - webuser -c which bundle #=>出力なし しかし、sshはwebuserとして …

4
bash(またはその他)で変数環境変数を設定する
スクリプトで、設定する環境変数のキーと値のペアを含むファイルを読み取ってから設定する必要があります。 これまでのところ、私はこれを持っています: #!/bin/bash cat $1 | while read kv do key=${kv%=*} val=`echo ${kv#*=} | sed 's/^"\|"$//g'` export $key="$val" done そして、私はこのようなファイルを読みたいです: XAUTHLOCALHOSTNAME="localhost" DISPLAY=":0" XAUTHORITY="/tmp/some-XAuthority" スクリプトの実行中はスコープでこれらの変数のみが必要なので、親スコープのスクリプトで変数を設定する問題を解決する必要はありません。 私のテストから、私の問題はexport $key="$val"にあると思うので、その行の交換が必要だと思います。


5
Makefileを介してPATHにディレクトリを追加する
Makefile内で変更したPATHを現在のターミナルにエクスポートする際に問題が発生します。Makefileディレクトリがどこにあっても、PATH内のbinフォルダーに追加しようとしています。 makefileの関連するストリップは次のとおりです。 PATH := $(shell pwd)/bin:$(PATH) install: mkdir -p ./bin export PATH echo $(PATH) エコーはそれを正しく出力しますが、ターミナルでエコーをやり直しても、PATHは同じままです。

3
sudoでvimを実行すると、「プロトコルが指定されていません」
最近、を使用すると「プロトコルが指定されていません」というメッセージが表示され始めますsudo vim。すべてが正常に機能していた(ファイルを開いて編集して保存できる)ため、これは単なる警告です。使ってsudo -E vimもメッセージが出ないので/etc/profile最近編集した時に何かおかしなことになったと思いますが、よくわかりません。どうすれば修正できますか?

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