Назад | Перейти на главную страницу

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

Мне нужно установить общесистемную переменную среды (например, NODE_ENV = production) в тюрьме FreeBSD.

Я попытался установить его в / etc / profile, но когда я его нашел

root@www:/ # source /etc/profile

я получил

export: Command not found.

Он работает в хост-системе.

Я также пробовал установить его /.chsrc. Но это делает переменную доступной только для root, но не для других пользователей тюрьмы.

Вопрос: «Установить общесистемную переменную среды в тюрьме FreeBSD».

A: Установите переменную как в /etc/profile и /etc/csh.cshrc.


подробности

Цитата из 3.9. Снаряды

Как установить переменную среды, зависит от оболочки. В tcsh (1) и csh (1) используйте setenv для установки переменных среды. В sh (1) и bash используйте экспорт, чтобы установить текущие переменные среды.


Все приведенные ниже примеры были выполнены в тюрьме.

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