J'ai le script suivant:
#!/bin/bash
set -x
if :; then
echo a
fi
Si je cours bash /tmp/file, aest répercuté, mais si je cours source /tmp/file, j'obtiens:
bash: /tmp/test: line 6: syntax error: unexpected end of file
Le résultat:
knezi@holly tmp]$set -x; source /tmp/test; set +x
+ source /tmp/test
++ set -x
bash: /tmp/test: line 6: syntax error: unexpected end of file
+ set +x
knezi@holly tmp]$set -x; command source /tmp/test; set +x
+ set -x
+ command source /tmp/test
+ source /tmp/test
++ set -x
bash: /tmp/test: line 6: syntax error: unexpected end of file
+ set +x
knezi@holly tmp]$bash -c "source /tmp/test"
+ bash -c 'source /tmp/test'
++ :
++ echo a
a
knezi@holly tmp]$od -c /tmp/test
0000000 # ! / b i n / b a s h \n s e t
0000020 - x \n i f : ; t h e n \n \t e
0000040 c h o a \n f i \n
0000051
Sortie des commandes shopt -pet set -o: http://pastebin.com/bsqc8aru
Sortie de set: http://pastebin.com/S9KpqZAL
declare -fp ne produit rien.
Je pensais que cela sourcefaisait la même chose que bash, mais au lieu de démarrer une nouvelle session, le code était plutôt exécuté dans la session actuelle. Quelqu'un peut-il m'expliquer cette erreur?
Je lance bash GNU bash, version 4.2.53 (1) -release (x86_64-redhat-linux-gnu).
$BASH_ENVensemble?
bash -cvotre question. Ensuite, montrez-nous le contenu de votre ~/.bashrcfichier, il y a probablement quelque chose qui fout les choses.