fichier script en cours d’exécution dans Ubuntu

J’essaie de lancer le fichier script des freecs du serveur de chat opensource (http://freecs.sourceforge.net/) nommé freecs.sh. Lorsque je lance le fichier avec ./freecs.sh, je suis suivi de: bash: ./freecs.sh: / bin / sh ^ M: bad interpreter: No such file or directory même si le fichier existe dans le même répertoire. Lorsque j’essaie de l’exécuter avec bash freecs.sh, j’obtiens ceci: freecs.sh: ligne 12: $ ‘\ r’: commande introuvable

 freecs.sh: line 16: $'\r': command not found freecs.sh: line 19: $'\r': command not found freecs.sh: line 22: $'\r': command not found freecs.sh: line 30: $'\r': command not found freecs.sh: line 33: $'\r': command not found freecs.sh: line 36: $'\r': command not found freecs.sh: line 40: $'\r': command not found freecs.sh: line 43: $'\r': command not found freecs.sh: line 49: $'\r': command not found freecs.sh: line 50: like: command not found freecs.sh: line 51: syntax error near unexpected token `$'{\r'' 'reecs.sh: line 51: `echo_failure() { 

J’ai déjà essayé chmod + x freecs.sh, puis exécuté le script mais je n’ai pas aidé. Le fichier ressemble à celui-ci:

 #!/bin/sh # # FreeCS startup script # for RedHat # # chkconfig: 345 90 20 # description: FreeCS startup script # processname: java # pidfile: /var/run/freecs.pid # Source function library. #./etc/rc.d/init.d/functions # set this to the directory where your JVM is installed #export JAVA_HOME=/usr/java/j2sdk1.4.1_02 export JAVA_HOME=/user/local/java/jdk1.6.0_33 # this sets the locales for java export LANG="de_DE@euro:de_DE:de" # setting environment for freecs export PATH=$PATH:$JAVA_HOME/bin # fill in the directory where you installed freecs #export FREECS_HOME=/usr/local/freecs export FREECS_HOME=/home/Applications/freecs-1.3.20111225 FREECS_BIN=java FREECS_STARTUP_LOG=/var/log/freecs/freecs_startup.log FREECS_PID=/var/run/freecs.pid FREECS_USER=root JARS=$CLASSPATH:$FREECS_HOME/lib/freecs.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc-1.2-b1.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc/commons-codec-1.4.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc/commons-httpclient-3.1.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc/xmlrpc-common-3.1.3.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc/xmlrpc-client-3.1.3.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc/xmlrpc-server-3.1.3.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc/commons-logging-1.1.jar JARS=$JARS:$FREECS_HOME/lib/xmlrpc/ws-commons-util-1.0.2.jar # if sql-authentication is used, you will have to insert # the path to your jdbc-driver here # JARS=$JARS:$FREECS_HOME/lib/ext/mysql.jar export CLASSPATH=$JARS RETVAL=0 like functions from /etc/rc.d/init.d/functions echo_failure() { [ "$BOOTUP" = "color" ] && $MOVE_TO_COL echo -n "[" [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE if [ -z "$1" ]; then echo -n "FAILED" else echo -n "$1" fi [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL echo -n "]" echo -ne "\r" return 1 } startfreecs() { gotbase= user= case $1 in '') echo '$0: Usage: startfreecs [--user] {program}' return 1;; --user) shift daemon_user=$1 shift ;; esac # Save basename. [ -z $gotbase ] && base=`basename $1` # make sure it doesn't core dump anywhere; # while this could mask # problems with the daemon, # it also closes some security problems ulimit -c 0 # Echo daemon [ "$BOOTUP" = "verbose" ] && echo -n " $base" # Set the maximum filedescriptors a little bit higher # on heavy usage, this may go up a little bit (every network # connection is one filedescriptor) ulimit -n 8192 # And start it up. if [ -z "$daemon_user" ]; then $* >$FREECS_STARTUP_LOG & hpid=$! else touch $FREECS_STARTUP_LOG su $daemon_user -c "$*" 2>/dev/null >$FREECS_STARTUP_LOG & hpid=$! fi /bin/ps h $hpid >/dev/null 2>&1 \ && success "$base startup" || failure "$base startup" echo $hpid >$FREECS_PID } # See how we were called. case "$1" in start) # check if freecs is already running - if not, start it echo -n "Starting FreeCS:" DATE=`date +%Y%m%d_%H%M_%S` cp /var/log/freecs/*.log /var/log/freecs/*.$DATE if [ ! -f /var/lock/subsys/freecs ]; then startfreecs --user $FREECS_USER $JAVA_HOME/bin/$FREECS_BIN -server -Xms128m -Xmx768m \ -cp $JARS freecs.Server -b=$FREECS_HOME RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/freecs else if [ -f $FREECS_PID ]; then echo_failure "ALREADY RUNNING" else echo_failure "DEAD" fi fi echo ;; stop) echo -n "Shutting down FreeCS:" if [ -f $FREECS_PID ] ; then pid=`head -1 $FREECS_PID` kill -SIGTERM $pid && echo_success else echo_failure "NOT RUNNING" fi rm -f $FREECS_PID rm -f /var/lock/subsys/freecs echo ;; status) pid=`pidof -o $$ -o $PPID -o %PPID -x $FREECS_BIN` if [ "$pid" != "" ] ; then echo "FreeCS is running ($pid)" else echo "FreeCS is stopped" fi RETVAL=$? ;; restart) $0 stop sleep 20 $0 start ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 esac exit $RETVAL 

Quelqu’un peut-il s’il vous plaît me dire pourquoi freecs.sh ne trouve pas le fichier? et avec bash freecs.sh pourquoi je reçois une erreur? Mon répertoire d’accueil java est défini correctement.

Thnaks

C’est parce que votre fichier a des symboles de nouvelle ligne de style dos.

Courir

 dos2unix freecs.sh 

puis l’exécute comme d’habitude.

Si dos2unix n’est pas installé, vous pouvez essayer à la place:

 sed -i 's/\r//g' freecs.sh 

ps. Pour éviter de telles erreurs à l’avenir, vous pouvez toujours vérifier ces symboles avec le sed -nl filename .

vous devez corriger votre code avec:

 dos2unix ./freecs.sh