Lors de l'exécution d'un script bash sur ubuntu 9.10, j'obtiens un comportement différent de l'option "-e" de bash echo selon que je cours ou non en tant que root.echo -e agit différemment lorsqu'il est exécuté dans un script par root sur ubuntu
Tenir compte de ce script:
$ cat echo-test
if [ "`whoami`" = "root" ]; then
echo "Running as root"
fi
echo Testing /bin/echo -e
/bin/echo -e "foo\nbar"
echo Testing bash echo -e
echo -e "foo\nbar"
Lorsqu'il est exécuté en tant qu'utilisateur non root, je vois cette sortie:
$ ./echo-test
Testing /bin/echo -e
foo
bar
Testing bash echo -e
foo
bar
Exécuté en tant que root, je vois cette sortie:
$ sudo ./echo-test
Running as root
Testing /bin/echo -e
foo
bar
Testing bash echo -e
-e foo
bar
Notez que "-e" est renvoyé dans le dernier cas ("-e foo" au lieu de "foo" sur l'avant-dernière ligne). Lors de l'exécution d'un script en tant que root, la commande echo s'exécute comme si "-e" était donné et, si -e est donné, l'option elle-même est renvoyée en écho.
Je peux comprendre de subtiles différences de comportement entre/bin/echo et bash echo, mais je m'attendrais à ce que bash echo se comporte de la même manière quel que soit l'utilisateur qui l'appelle.
Quelqu'un sait pourquoi c'est le cas? Est-ce un bug dans bash echo?
FYI - Je suis en bash GNU, la version 4.0.33 (1) -release (x86_64-pc-linux-gnu)
#!/Bin/bash au sommet corrige ce problème. Donc root doit utiliser un shell différent avec un écho différent. Ça a du sens. Merci beaucoup! – user353172