sh: 0: Неверный вариант -

10

Когда я пытаюсь выполнить команду ниже в 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"

Я получаю эту ошибку:

sh: 0: Illegal option --

Вышеупомянутая команда должна поддерживаться в Linux, но когда я пытаюсь реализовать такое же решение (Ant-скриптинг) в Ubuntu, я сталкиваюсь с этой проблемой.

    
задан Firoj Badsa 27.11.2016 в 18:49
источник

1 ответ

17

sh на ubuntu является символической ссылкой на оболочку тире, а не bash. Dash не поддерживает longform --login , но поддерживает сокращенную форму, -l (от man dash ):

  

-l Сделать тире действовать так, как если бы он был вызван как оболочка входа.

Замена --login на -l в вашей команде должна исправить вашу проблему.

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

Если вы хотите вызывать bash вместо тире, просто вызовите bash вместо sh .

sudo -n -u contd bash --login -c ". <etc>
    
ответ дан Seth 27.11.2016 в 19:05
источник