
FreeBSD jail でシステム全体の環境変数 (つまり NODE_ENV=production) を設定する必要があります。
/etc/profileで設定してみましたが、
root@www:/ # source /etc/profile
私は
export: Command not found.
ホストシステム上で動作します。
/.chsrc の設定も試してみました。しかし、その場合、変数は root のみが利用でき、jail の他のユーザーは利用できません。
答え1
質問:「FreeBSD jail でシステム全体の環境変数を設定します。」
/etc/profile
A:との両方に変数を設定します/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
デフォルトのシェルを持つユーザーsh
とbash
/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
この環境はcsh
、tcsh
$ csh
admin@test_01:~ % echo $NODE_ENV
production
また、su
$ su
root@test_01:/home/admin # echo $NODE_ENV
production
とexport
にはコマンドがありません。これがエラーの原因です。csh
tcsh
$ csh
admin@test_01:~ % source /etc/profile
NODE_ENV=production: Command not found.
export: Command not found.
デフォルトのシェルを持つユーザーcsh
とtcsh
/etc/csh.cshrc
csh
は、およびのグローバル環境を設定するのに適した場所です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