gpt4 book ai didi

bash - 在ubuntu中运行脚本文件

转载 作者:行者123 更新时间:2023-11-29 09:22:07 27 4
gpt4 key购买 nike

我正在尝试运行名为 freecs.sh 的开源聊天服务器 freecs(http://freecs.sourceforge.net/) 的脚本文件。当我用 ./freecs.sh 运行文件时,我得到以下信息:bash: ./freecs.sh:/bin/sh^M: bad interpreter: No such file or directory即使该文件存在于同一目录中。当我尝试使用 bash freecs.sh 运行它时,我得到了这个:freecs.sh: line 12: $'\r': command not found

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() {

我已经尝试过 chmod +x freecs.sh 然后运行脚本但没有帮助。该文件如下所示:

#!/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

谁能告诉我为什么 freecs.sh 找不到文件?和 bash freecs.sh 为什么我得到一个错误?我的 java 主目录设置正确。

谢谢

最佳答案

那是因为你的文件有dos风格的换行符号。

运行

dos2unix freecs.sh

然后像往常一样运行它。

如果 dos2unix 没有安装,你可以试试:

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

附言。为了防止将来出现此类错误,您始终可以使用 sed -n l filename 检查此类符号。

关于bash - 在ubuntu中运行脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11973427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com