sh: 0: Option illégale -


10

Lorsque j'essaie d'exécuter la commande ci-dessous dans Ubuntu:

sudo -n -u contd sh --login -c ". /home/contd/iib-10.0.0.5/server/bin/mqsiprofile;/home/contd/iib-10.0.0.5/common/jdk/jre/bin/java -cp $CLASSPATH:$MQSI_JREPATH//usr/share/ant/lib/ant-antlr.jar:/usr/share/ant/lib/ant-apache-bcel.jar:/usr/share/ant/lib/ant-apache-bsf.jar:/usr/share/ant/lib/ant-apache-log4j.jar:/usr/share/ant/lib/ant-apache-oro.jar:/usr/share/ant/lib/ant-apache-regexp.jar:/usr/share/ant/lib/ant-apache-resolver.jar:/usr/share/ant/lib/ant-apache-xalan2.jar:/usr/share/ant/lib/ant-commons-logging.jar:/usr/share/ant/lib/ant-commons-net.jar:/usr/share/ant/lib/ant-javamail.jar:/usr/share/ant/lib/ant-jdepend.jar:/usr/share/ant/lib/ant-jmf.jar:/usr/share/ant/lib/ant-jsch.jar:/usr/share/ant/lib/ant-junit.jar:/usr/share/ant/lib/ant-junit4.jar:/usr/share/ant/lib/ant-launcher.jar:/usr/share/ant/lib/ant-swing.jar:/usr/share/ant/lib/ant-testutil.jar:/usr/share/ant/lib/ant.jar:/usr/share/ant/lib/jsch.jar:/usr/share/ant/lib/junit.jar -Djava.ext.dirs=/home/contd/iib-10.0.0.5/common/jdk/lib:/home/contd/iib-10.0.0.5/common/jdk/jre/lib/ext -Dant.home=/usr/share/ant org.apache.tools.ant.Main -f /home/contd/AntScript/build_main.xml"

Je reçois cette erreur:

sh: 0: Illegal option --

La commande ci-dessus est censée être prise en charge sous Linux, mais lorsque j'essaie d'implémenter la même solution (script Ant) dans Ubuntu, je fais face à ce problème.


5
Je ne pense pas que le dashshell supporte une --loginoption longue : voir DashAsBinSh
steeldriver

3
Une solution rapide serait de remplacer --loginpar juste -l.
Seth

Réponses:


17

shsur ubuntu est un lien symbolique vers le shell du tableau de bord, pas bash. Dash ne prend pas en charge la forme longue --login, mais il prend en charge la forme abrégée, -l(à partir de man dash):

-l Faites en sorte que le tiret agisse comme s'il avait été invoqué en tant que shell de connexion.

Le remplacement --loginpar -lvotre commande devrait résoudre votre problème.

sudo -n -u contd sh -l -c ". <etc>

Si vous souhaitez appeler bash au lieu de dash, appelez simplement bashau lieu de sh.

sudo -n -u contd bash --login -c ". <etc>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.