In meinem *.sh
Skript fehlt der Shebang in der ersten Zeile. Kann ich das mit beheben sed
?
Antwort1
i
Fügen Sie den Shebang mit ein ( ) sed
, In-Place-Operation:
sed -i '1 i #!/bin/bash' file.sh
Beim Sichern der Originaldatei mit der .bak
Erweiterung:
sed -i.bak '1 i #!/bin/bash' file.sh
Ersetzen Sie es #!/bin/bash
durch das tatsächlich gewünschte Zeug.
Beispiel:
% cat foo.sh
echo foobar
% sed '1 i #!/bin/bash' foo.sh
#!/bin/bash
echo foobar
Antwort2
Verwenden von bash
und cat
(nicht an Ort und Stelle):
cat <(echo '#!/bin/sh') foo.sh
Oder direkt mit GNU awk >= 4.1:
awk -i inplace 'BEGINFILE{print "#!/bin/sh"}{print}' foo.sh