
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/profile
e /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 sh
ebash
/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 csh
comotcsh
$ 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á export
comando em csh
e 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 csh
etcsh
/etc/csh.cshrc
é o lugar certo para definir o ambiente global csh
e 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