Ich lerne gerade die Grundlagen von Linux mit Ubuntu und es gibt eine kleine Aktivität, bei der ich Informationen über Umgebungsvariablen finden muss. Ich habe bereits 6/7 Informationen gefunden, kann sie aber nicht finden SUDO_COMMAND
. So geht die Liste:
SHELL=/bin/bash
USER=student
SUDO_COMMAND=
PWD=/home
HOME=/home/student
LOGNAME=student
OLDPWD=/home/student
Mir ist aufgefallen, dass die Informationen in Ordnung sind und SUDO_COMMAND
sich zwischen Benutzer und pwd befinden. Habe ich irgendwo einen Fehler gemacht?
command-line
sudo
Kyle Cruz
quelle
quelle
Antworten:
SUDO_COMMAND
ist eine Umgebungsvariable, diesudo
nur in der Umgebung des von ihr gestarteten Prozesses festgelegt wird (und von allen untergeordneten Prozessen geerbt wird). Wenn Sie ausführensudo some-command arg1 arg2
,SUDO_COMMAND
enthält der absolute Pfad zusome-command
undarg1 arg2
. Wenn Siesudo -s
oder ausgeführt habensudo -i
, wird die Variable auf die Shell gesetzt, die gestartet wurde. In jedem Fall werden Sie es wahrscheinlich nicht außerhalb eines Prozessbaums sehen, der von gestartet wurdesudo
.Zum Beispiel:
Oder:
Ich weiß nicht , welchen Befehl Sie verwenden, aber Sie können nicht auf den Ausgang verlassen
set
,declare
,env
oderprintenv
in einer bestimmten Reihenfolge zu sein.quelle
sudo echo $SUDO_COMMAND
könnte verwendet werden, um eine Endlosschleife zu erstellen… :(Dies
SUDO_COMMAND
ist eine Umgebungsvariable, die auf den von sudo ausgeführten Befehl gesetzt wird .Wie von @muru erwähnt, wird
sudo
diese Umgebungsvariable in dieser neuen Shell angezeigt, wenn eine neue Shell ausgeführt wirdMehr Info
man sudo
bietet die folgenden Details:quelle
SUDO_COMMAND
nur gibt es in der Umgebung gestartet durchsudo
, wennSUDO_COMMAND
tatsächlich wo/bin/ls
, dann würden Sie nicht eine Shell laufen zu bekommenecho $SUDO_COMMAND
.