Mein einfaches Skript ist wie folgt:". Dateiname" kann Datei nicht finden, wenn von/bin/sh ausgeführt wird, funktioniert von/bin/bash; Warum?
#!/bin/sh
DEF=.file_name_with_a_leading_dot.sh
. ${DEF}
Mitteilung über das/bin/sh auf der obersten Zeile. Wenn ich dieses einfache Skript ausführen, bekomme ich einen Fehler, dass die Datei nicht gefunden wird. Aber wenn ich diese obere Zeile zu #!/Bin/bash ändere, dann findet das Skript diese Datei im aktuellen Verzeichnis gut.
Aber, auf meinem Ubuntu Linux-Laptop sehe ich, dass/bin/sh ist ein Symlink zu/bin/bash. Also, warum verhält sich mein Skript anders?
Außerdem kann ich das Skript wie folgt ausführen:
/bin/bash ./script.sh
Und es ist OK.
Also, was fehlt mir?
Sie können einen Blick hier werfen: http://stackoverflow.com/questions/5725296/difference-between-sh-and-bash. Grundsätzlich sind 'bash' und' sh' nicht dasselbe. – ThanksForAllTheFish
Bash startet im Kompatibilitätsmodus, wenn er '/ bin/sh' genannt wird. – hek2mgl
Aber warum heißt das, dass er die Datei nicht findet? Ich kann das reproduzieren. – tripleee