Innerhalb des FreeBSD-Jails – Festlegen globaler Umgebungsvariablen

Innerhalb des FreeBSD-Jails – Festlegen globaler Umgebungsvariablen

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/profileals 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 shundbash

/etc/profileist 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 cshals 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 exportBefehl in cshund 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 cshundtcsh

/etc/csh.cshrccshist 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 rootist 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

verwandte Informationen