2

unix および bash プログラミングの初心者です。ボクシーにメモリカードに保存されている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」と入力すると、dir に移動しますが、そのコードをスクリプトに入れると、アクセスが拒否されます。

ここで何が間違っていますか。または、作業ディレクトリを変更する必要がないように、これにどのようにアプローチできますか?

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 に答える