Warum öffnet Sudo Skripte mit / bin / sh?

405
stav meir

Ich habe ein Skript, das Sudo-Berechtigungen benötigt und /bin/bashauf einem Ubuntu 14.04-Computer ausgeführt werden muss.

Wenn ich es als root (oder bei einem anderen Benutzer) eingeloggt lade, wird es /bin/bashwie erwartet geöffnet. Wenn ich jedoch das Skript ausführe, wird sudoes geöffnet, /bin/shunabhängig davon, unter welchem ​​Benutzer ich angemeldet bin.

Ich habe geprüft /etc/passwdund sehe, dass /bin/bashdie Standard-Shell für root ist. $SHELList auch definiert /bin/bash.

Ich bin nicht der einzige, der das Skript verwendet, also kann ich mich nicht darauf verlassen, dass die Leute sudo -ies ausführen.

Wo ist die Sudo-Shell definiert? Wie kann ich das ändern?

0
Haben Sie versucht, die Shell mit einem # zu setzen! Zeile im Skript? Jesusaur vor 5 Jahren 1
Fügen Sie Ihrem Skript als erste Zeile hinzu: `#! / Bin / bash` harrymc vor 5 Jahren 1
Richtig, ich habe vergessen zu erwähnen, dass ich die Hülle bereits so eingestellt habe. Es hat nicht geholfen. Ich werde die Frage bearbeiten stav meir vor 5 Jahren 0
Ich habe nur überprüft, ich hatte `#! / Bin / bash 'im Skript, aber nicht als erste Zeile! Ich hatte vorher einige Kommentare zum Skript, alte Python-Gewohnheiten, denke ich. Ich habe ihre Reihenfolge geändert und das Skript öffnet sich mit Bash! Vielen Dank. Ich kann Ihre Kommentare nicht bestätigen: / stav meir vor 5 Jahren 0
Bitte bearbeiten Sie die Antwort nicht in Ihre Frage. [su] ist eine Frage- und Antwortseite, und Antworten sollten von Fragen getrennt sein. Sie können stattdessen [Ihre eigene Frage beantworten] (https://superuser.com/help/self-answer). DavidPostill vor 5 Jahren 0
Okay, danke. @DavidPostill Können Sie bitte meine Frage erneut öffnen, damit ich sie beantworten kann? Ich möchte keine leeren Bearbeitungen vornehmen. stav meir vor 5 Jahren 0
@stavmeir Fertig. DavidPostill vor 5 Jahren 0

1 Antwort auf die Frage

1
stav meir

Mein Problem war, dass ich das Skript vor der #!/bin/bashZeile dokumentiert habe, also war der Shebang nicht die erste Zeile im Skript.