Wie kommt es, dass folgendes, dh $PATH
direktes Echo von bash -c
:
docker exec -i -t my_container bash -c "echo $PATH"
Gibt einen anderen Wert $PATH
als den folgenden zurück, dh eine interaktive Bash-Sitzung wird gestartet und das $PATH
?
docker exec -i -t my_container bash
root@21e6d898c3c2:/# echo $PATH
Um dieser Frage einen Kontext zu geben, möchte ich einen Befehl im Container mit ausführen. docker exec
Dieser Befehl befindet sich auf dem Pfad, wenn ich eine interaktive Bash-Sitzung starte, aber nicht, wenn ich nur den Befehl ausführe.
Die Verwendung des vollständigen Pfads der ausführbaren Datei ist in diesem Fall keine Problemumgehung, da der Befehl auf anderen Umgebungsvariablen basiert, die genau wie PATH
in einer interaktiven Bash-Sitzung festgelegt wurden, jedoch nicht, wenn ich den Befehl direkt ausführe.
docker ... "echo $PATH"
wird , geschweige denn die Bash-Shell. Wenn Sie möchten, dass der PATH der Shell unter Docker ausgeführt wird, verwenden Sie einfache Anführungszeichen ( ), um eine vorzeitige Auswertung der PATH-Variablen zu verhindern.docker ... 'echo $PATH'