
Ich muss in einem FreeBSD-Jail eine systemweite Umgebungsvariable (z. B. NODE_ENV=production) festlegen.
Ich habe versucht, es in /etc/profile einzustellen, aber als ich es bezogen habe
root@www:/ # source /etc/profile
ich habe
export: Command not found.
Es funktioniert auf dem Hostsystem.
Ich habe auch versucht, es auf /.chsrc zu setzen. Dadurch wird die Variable jedoch nur für Root verfügbar, nicht aber für andere Benutzer des Jails.
Antwort1
Q:"Legen Sie eine systemweite Umgebungsvariable in einem FreeBSD-Jail fest."
A: Setzen Sie die Variable sowohl in /etc/profile
als auch /etc/csh.cshrc
.
Einzelheiten
Zitat aus3.9. Muscheln
Die Art und Weise, wie eine Umgebungsvariable gesetzt wird, ist je nach Shell unterschiedlich. In tcsh(1) und csh(1) verwenden Sie setenv, um Umgebungsvariablen zu setzen. In sh(1) und bash verwenden Sie export, um die aktuellen Umgebungsvariablen zu setzen.
Alle Beispiele unten wurden in einem Gefängnis ausgeführt
FreeBSD test_01.example.org 12.0-RELEASE FreeBSD 12.0-RELEASE r341666 GENERIC i386
Benutzer mit Standard-Shell sh
undbash
/etc/profile
ist der richtige Ort, um die globale Umgebung festzulegen. Zum Beispiel
$ cat /etc/profile
NODE_ENV=production; export NODE_ENV
Zitat ausProfil(4)
Bei allen Benutzern, die die Shell sh(1) als Anmeldebefehl verwenden, werden die Befehle in diesen Dateien als Teil ihrer Anmeldesequenz ausgeführt.
Beispielsweise kann der Benutzeradmin
$ grep admin /etc/passwd
admin:*:1001:1001:User &:/home/admin:/bin/sh
führt aus/etc/profile
" als Teil seiner Anmeldesequenz"und legt die Umgebung fest
$ echo $NODE_ENV
production
Dieses Umfeld wird sowohl in csh
als auchtcsh
$ csh
admin@test_01:~ % echo $NODE_ENV
production
Es wird auch bewahrt durchsu
$ su
root@test_01:/home/admin # echo $NODE_ENV
production
Es gibt keinen export
Befehl in csh
und tcsh
. Dies erklärt den Fehler
$ csh
admin@test_01:~ % source /etc/profile
NODE_ENV=production: Command not found.
export: Command not found.
Benutzer mit Standard-Shell csh
undtcsh
/etc/csh.cshrc
csh
ist der richtige Ort, um die globale Umgebung für und festzulegen tcsh
. Zum Beispiel
root@test_01:~ # cat /etc/csh.cshrc
setenv NODE_ENV production
Die Standard-Shell root
ist standardmäßigcsh
root@test_01:~ # grep root /etc/passwd
root:*:0:0:Charlie &:/root:/bin/csh
Dies legt die Umgebung fest
root@test_01:~ # echo $NODE_ENV
production