2

嗨,unix 和 bash 编程新手。我正在尝试制作一个简单的启动脚本,让我的 boxee 启动存储在存储卡上的 XBMC。我可以通过在 telnet 中输入命令来启动这些命令,但是如果我调用 test.sh 脚本,它将不允许我访问存储 XBMC 的目录。

#!/tmp/mnt/6337-3533/xbmc
BASEDIR=/tmp/mnt/6337-3533/xbmc $0
killall U99boxee; killall BoxeeLauncher; killall run_boxee.sh; killall Boxee; killall BoxeeHal


GCONV_PATH=$PWD/gconv AE_ENGINE=active PYTHONPATH=$PWD/python2.7:$PWD/python2.7/lib-dynload XBMC_HOME=$PWD ./xbmc.bin -p

给出:

# sh test.sh
: not foundne 2:
: not foundne 3:
test.sh: line 4: /tmp/mnt/6337-3533/xbmc: Permission denied
: not foundne 5:
: not foundne 6:
killall: U99boxee: no process killed
killall: BoxeeLauncher: no process killed
killall: run_boxee.sh: no process killed
killall: Boxee: no process killed
: no process killed
: not foundne 9:
: not foundne 10:
test.sh: line 11: ./xbmc.bin: not found
#

我使用了 xbmc 的命令行。我假设 $PWD 期望脚本位于 /tmp/mnt/6337-3533/xbmc

如果我在 telnet 中输入“cd /tmp/mnt/6337-3533/xbmc”,它会将我带到目录,但如果我将该代码放入脚本中,它将拒绝访问。

我在这里做错了什么。或者我该如何解决这个问题,这样我就不必更改我的工作目录?

4

1 回答 1

2

2号线将扩大到

BASEDIR=/tmp/mnt/6337-3533/xbmc test.sh

这将尝试使用在第 1 行指定的 /tmp/mnt/6337-3533/xbmc 解释器运行 test.sh,这将失败,因为那是一个目录。如果您要通过执行“sh test.sh”来运行脚本,则第 1 行不必指定有效的解释器,但如果将第 1 行更改

#!/bin/sh

如果您只想调用 xbmc.bin 以查看其环境中 BASEDIR 的值,请将第 2 行替换为

BASEDIR=/tmp/mnt/6337-3533/xbmc
export BASEDIR
于 2013-11-07T19:21:28.380 回答