sh: 0: Illegale Option -

10

Wenn ich versuche, den folgenden Befehl in Ubuntu auszuführen:

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"

Ich erhalte diesen Fehler:

sh: 0: Illegal option --

Der obige Befehl soll unter Linux unterstützt werden, aber wenn ich versuche, dieselbe Lösung (Ant-Scripting) in Ubuntu zu implementieren, tritt dieses Problem auf.

Firoj Badsa
quelle
5
Ich glaube nicht, dass die dashShell eine Langform- --loginOption unterstützt: siehe DashAsBinSh
Steeldriver
3
Eine schnelle Lösung wäre, durch --loginnur zu ersetzen -l.
Seth

Antworten:

17

shauf Ubuntu ist ein Symlink zur Dash-Shell, nicht Bash. Dash unterstützt die Langform nicht --login, aber die Kurzform -l(von man dash):

-l Lassen Sie den Dash so tun, als wäre er als Login-Shell aufgerufen worden.

Das Ersetzen --logindurch -lin Ihrem Befehl sollte Ihr Problem beheben.

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

Wenn Sie bash anstelle von dash aufrufen möchten, rufen Sie einfach bashstatt auf sh.

sudo -n -u contd bash --login -c ". <etc>
Seth
quelle