FreeBSD jail内 – グローバル環境変数の設定

FreeBSD jail内 – グローバル環境変数の設定

FreeBSD jail でシステム全体の環境変数 (つまり NODE_ENV=production) を設定する必要があります。

/etc/profileで設定してみましたが、

root@www:/ # source /etc/profile

私は

export: Command not found.

ホストシステム上で動作します。

/.chsrc の設定も試してみました。しかし、その場合、変数は root のみが利用でき、jail の他のユーザーは利用できません。

答え1

質問:「FreeBSD jail でシステム全体の環境変数を設定します。」

/etc/profileA:との両方に変数を設定します/etc/csh.cshrc


詳細

引用元3.9. シェル

環境変数の設定方法はシェルによって異なります。tcsh(1) および csh(1) では、setenv を使用して環境変数を設定します。sh(1) および bash では、export を使用して現在の環境変数を設定します。


以下の例はすべて刑務所で処刑されたものである

FreeBSD test_01.example.org 12.0-RELEASE FreeBSD 12.0-RELEASE r341666 GENERIC  i386

デフォルトのシェルを持つユーザーshbash

/etc/profileグローバル環境を設定するのに適した場所です。例えば

$ cat /etc/profile
NODE_ENV=production;    export NODE_ENV

引用元プロフィール(4)

ログインコマンドとしてシェル sh(1) を使用するすべてのユーザーは、ログインシーケンスの一部としてこれらのファイル内のコマンドを実行します。

例えば、ユーザーadmin

$ grep admin /etc/passwd
admin:*:1001:1001:User &:/home/admin:/bin/sh

実行する/etc/profile 「ログインシーケンスの一部として」環境を設定する

$ echo $NODE_ENV
production

この環境はcshtcsh

$ csh
admin@test_01:~ % echo $NODE_ENV
production

また、su

$ su
root@test_01:/home/admin # echo $NODE_ENV
production

exportにはコマンドがありません。これがエラーの原因です。cshtcsh

$ csh
admin@test_01:~ % source /etc/profile
NODE_ENV=production: Command not found.
export: Command not found.

デフォルトのシェルを持つユーザーcshtcsh

/etc/csh.cshrccshは、およびのグローバル環境を設定するのに適した場所ですtcsh。たとえば、

root@test_01:~ # cat /etc/csh.cshrc
setenv NODE_ENV production

のデフォルトシェルはrootデフォルトでcsh

root@test_01:~ # grep root /etc/passwd 
root:*:0:0:Charlie &:/root:/bin/csh

これにより環境が設定されます

root@test_01:~ # echo $NODE_ENV
production

関連情報