質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Fluentd

Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。

Q&A

解決済

3回答

6587閲覧

ホームディレクトリがないユーザに対する環境変数設定について

Kimsehwa

総合スコア312

Fluentd

Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。

0グッド

0クリップ

投稿2015/08/05 07:55

linuxでuserごとに環境変数を設定する時
~/.bash_profileとかでexportしてPATHの設置を入れたりしました。

ですが、ソフトウェアの実行用ユーザはホームディレクトリがなかったりしますね
その場合該当ユーザーに環境変数を設定する方法はありますか?

/etc/profileに環境設定をするとホームディレクトリがないユーザーにも反映されますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

/etc/profile だと影響範囲が広すぎるので、ソフトウェアを実行するシェルスクリプトの中で書くのが一般的な気がします。ただ、実行するファイルを編集するのは抵抗が有るかもしれません。その場合は、別ファイルに変数の設定を書いて シェルスクリプトから読み込むのが良いと思います。

例えば CentOS6 の Apache httpd では起動スクリプトで次のように設定ファイルを読み込んでます。

</etc/init.d/httpd から抜粋>

shellscript

1if [ -f /etc/sysconfig/httpd ]; then 2 . /etc/sysconfig/httpd 3fi

一方の設定ファイルにはShellの変数が設定されてます。

</etc/sysconfig/httpdの例>

(略) # # The default processing model (MPM) is the process-based # 'prefork' model. A thread-based model, 'worker', is also # available, but does not work with some modules (such as PHP). # The service must be stopped before changing this variable. # HTTPD=/usr/sbin/httpd.worker (略)

変数を子プロセスに引き継ぐ必要があれば export HOGE=piyo の形式で書くと良いです。

投稿2016/08/16 09:18

take88

総合スコア1351

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

man bashより:

bash が対話的なログインシェルとして起動されるか、 --login オプション 付 き の非対話的シェルとして起動されると、 /etc/profile ファイルが存在すれ ば、 bash はまずここからコマンドを読み込んで実行します。このファイル を 読 んだ後、 bash は ~/.bash_profile, ~/.bash_login, ~/.profile をこの順 番で探します。 bash は、この中で最初に見つかり、かつ読み込みが可能で あ るファイルからコマンドを読み込んで実行します。

(中略)
ログインシェルでない対話的シェルとして起動されると、 ~/.bashrc ファイル
があれば、 bash はここからコマンドを読み込み、実行します。この 動 作 は
--norc オプションで行わないようにできます。 --rcfile file オプションを
使うと、コマンドの読み込みと実行を ~/.bashrc からでなく file から行わせ
ることができます。

( 例えばシェルスクリプトを実行するために) 非対話的に起動されると、 bash は環境変数 BASH_ENV を調べ、この変数が定義されていればその値を展開し 、 得 られた値をファイル名とみなして、そこからコマンドの読み込みと実行を行 います。

つまり、/etc/profileはログインシェルで無いと読み込まれません。
ログインするのでしょうか?「ソフトウェアの実行用ユーザ」ということなのでログインしないのでは?

実際に実現したいこと(目的)を具体的に書いてもらうと、有用なアドバイスがもらえるかもしれません。
例えば、apacheプロセスに追加で環境変数を設定したいなら、apache起動スクリプトで設定します。

また、「ホームディレクトリが無いユーザー」というものはありません。すべてのユーザーにホームディレクトリがあります。そのあたりをご存じなければ、man 5 passwdを読んだ上で、/etc/passwdを眺めてください。

投稿2015/08/05 13:34

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

はい /etc/profile に書けば反映されますよ。詳しくは下記ページを参考になさって下さい。

http://takuya-1st.hatenablog.jp/entry/20110102/1293970212

もし特定のユーザー、グループだけに設定したいなら if文 で限定することも出来ます。

投稿2015/08/05 10:37

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kimsehwa

2015/08/05 10:56

そうなんですね、確認を持たせてくれてありがとうございます。!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問