shopt -s dotglob
J'écris un script pour copier des fichiers, et j'essaie d'utiliser pour permettre à cp de copier des fichiers dot comme .jshint
et ainsi de suite.
Je peux exécuter shopt -s dotglob
directement à une invite bash sans erreur. Cependant, l'exécution du script génère l'erreur:
script.sh: 81: script.sh: shopt: not found
J'exécute ce script en shell bash, avec l'en-tête shebang #!/usr/bin/env bash
. Ligne d'erreur:
shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/
Vous ne trouvez rien d'utile sur Google, vous savez quel est le problème ici?
#!/bin/bash
tête plus simple ?
shopt
est une commande intégrée bash, sh
n'a pas shopt
, et le message d'erreur ressemble à un message d'erreur de dash
. Il est donc très probable que l'erreur ici exécute un script bash avec sh
(qui, dash
par défaut, dans Ubuntu ). Même s'il sh
s'agit d'un lien symbolique vers bash
, exécuter un script bash avec sh
n'est pas la même chose que l'exécuter avec bash
.