В рамках FreeBSD jail – настройка глобальных переменных окружения

В рамках FreeBSD jail – настройка глобальных переменных окружения

Мне нужно установить общесистемную переменную окружения (например, 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команды . Это объясняет ошибкуcshtcsh

$ 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

Связанный контент