Ich schreibe ein Skript, um einige Dateien zu kopieren und versuche, shopt -s dotglob
cp zu ermöglichen, Dotfiles wie .jshint
und so weiter zu kopieren.
Ich kann shopt -s dotglob
ohne Fehler direkt an einer Bash-Eingabeaufforderung ausgeführt werden. Das Ausführen des Skripts löst jedoch den Fehler aus:
script.sh: 81: script.sh: shopt: not found
Ich führe dieses Skript in der Bash-Shell mit dem Shebang-Header aus #!/usr/bin/env bash
. Fehlerzeile:
shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/
Sie finden bei Google keine hilfreichen Informationen. Haben Sie eine Idee, wo das Problem liegt?
#!/bin/bash
Header?
shopt
ist eine eingebaute Bash, sh
hat keine shopt
und die Fehlermeldung sieht aus wie eine Fehlermeldung von dash
. Wahrscheinlich wird hier ein Bash-Skript ausgeführt sh
(was in Ubuntu dash
standardmäßig der Fall ist ). Selbst wenn sh
es sich um einen Symlink handelt, bash
ist das Ausführen eines Bash-Skripts sh
nicht dasselbe wie das Ausführen mit bash
.