Dentro da prisão do FreeBSD – definindo vars de ambiente global

Dentro da prisão do FreeBSD – definindo vars de ambiente global

Preciso definir uma variável de ambiente para todo o sistema (ou seja, NODE_ENV=produção) em uma prisão do FreeBSD.

Eu tentei configurá-lo em /etc/profile, mas quando o adquiri

root@www:/ # source /etc/profile

Eu obtive

export: Command not found.

Funciona no sistema host.

Eu também tentei configurá-lo /.chsrc. Mas isso apenas torna a variável disponível para root, mas não para qualquer outro usuário da prisão.

Responder1

P:"Defina uma variável de ambiente para todo o sistema em uma prisão do FreeBSD."

R: Defina a variável em /etc/profilee /etc/csh.cshrc.


Detalhes

Citando de3.9. Cartuchos

Como definir uma variável de ambiente difere entre os shells. Em tcsh(1) e csh(1), use setenv para definir variáveis ​​de ambiente. Em sh(1) e bash, use export para definir as variáveis ​​de ambiente atuais.


Todos os exemplos abaixo foram executados em uma prisão

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

Usuários com shell padrão shebash

/etc/profileé o lugar certo para definir o ambiente global. Por exemplo

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

Citando deperfil(4)

Todos os usuários que possuem o shell, sh(1), como comando de login têm os comandos nesses arquivos executados como parte de sua sequência de login.

Por exemplo, o usuárioadmin

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

executa/etc/profile "como parte de sua sequência de login"e define o ambiente

$ echo $NODE_ENV
production

Este ambiente será preservado tanto dentro cshcomotcsh

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

Também será preservado porsu

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

Não há exportcomando em cshe tcsh. Isso explica o erro

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

Usuários com shell padrão cshetcsh

/etc/csh.cshrcé o lugar certo para definir o ambiente global cshe tcsh. Por exemplo

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

O shell padrão rooté por padrãocsh

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

Isso define o ambiente

root@test_01:~ # echo $NODE_ENV
production

informação relacionada