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でサポートされるはずですが、Ubuntuで同じソリューション(Antスクリプト)を実装しようとすると、この問題に直面します。
sh
on Ubuntuは、bashではなく、ダッシュシェルへのシンボリックリンクです。ダッシュはロングフォーム--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>