Tengo el siguiente script:
#!/bin/bash
set -x
if :; then
echo a
fi
Si corro bash /tmp/file, ase repite, pero si corro source /tmp/file, obtengo:
bash: /tmp/test: line 6: syntax error: unexpected end of file
La salida:
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
Salida de comandos shopt -py set -o: http://pastebin.com/bsqc8aru
Salida de set: http://pastebin.com/S9KpqZAL
declare -fp no produce nada
Pensé que sourcehace lo mismo que bash, pero en lugar de comenzar una nueva sesión, ejecuta el código en la actual. ¿Alguien puede explicarme este error?
Ejecuto bash GNU bash, versión 4.2.53 (1) -release (x86_64-redhat-linux-gnu).
$BASH_ENVconjunto?
bash -csu pregunta. Luego, muéstranos el contenido de tu ~/.bashrcarchivo, probablemente hay algo allí que está arruinando las cosas.