
Мне нужно установить общесистемную переменную окружения (например, NODE_ENV=production) в джейле FreeBSD.
Я пробовал установить его в /etc/profile, но когда я его получил
root@www:/ # source /etc/profile
я получил
export: Command not found.
Работает на хост-системе.
Я также пробовал установить его как /.chsrc. Но это делает переменную доступной только для root, но не для других пользователей jail.
решение1
В:«Установить общесистемную переменную среды в джейле FreeBSD».
A: Установите переменную как в , так /etc/profile
и в /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