0

CentOS 4.1 で bashdb を使用しようとしています (残念ながら、別の / 新しい OS を選択することはできません)。bash 4.2 をインストールしてから、bashdb 4.2-0.8 をインストールしました。configure、make、make check、make install からの苦情はありませんでした。すべてが桃色に見えました。

ただし、「bash --debugger myscript」または「bashdb myscript」として bashdb を使用しようとすると、常に次のエラーが発生します。

[bot@sjbld1 bin]$ bashdb --  putxen.sh
bash debugger, bashdb, release 4.2-0.8

Copyright 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Rocky Bernstein
This is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.

/usr/local/share/bashdb/lib/setshow.sh: line 91: /dev/pts/2: Permission denied
/usr/local/share/bashdb/lib/setshow.sh: line 91: /dev/pts/2: Permission denied
/usr/local/share/bashdb/lib/setshow.sh: line 91: /dev/pts/2: Permission denied
/usr/local/share/bashdb/lib/setshow.sh: line 91: /dev/pts/2: Permission denied
[bot@sjbld1 bin]$

setshow.sh に 91 行目はありません。また、/dev のディレクトリ リストに /dev/pts もありません。

続行する方法についての提案は非常に高く評価されます。私は壊れたシェル スクリプトを処理しています。bash (または Linux) が苦手なので、set -x および echo ステートメントよりも詳細なデバッグを望んでいます。

ありがとう

完全を期すために、konsoleboxの要求に従って、bashdbテストとして使用しようとしていたbashスクリプトを追加する必要がありましたが、「許可が拒否されました」問題はどのコードでも発生し、Red Cricketが提案するようにsudoを使用することで解決されます. スクリプトは次のとおりです。

[bot@sjcpbrvpxbld1 bin]$ cat putxen.sh
if [ x$1 == x ]
then
    echo must have filename as parameter
    exit 1
fi
if [ -e $1 ]
then
    echo $1 found
else
    echo cannot find ./$1
    exit 1
fi
FTPTGT=10.10.10.25
DIRTGT=xva
echo ftp upload file to $DIRTGT directory on $FTPTGT
ftp -n $FTPTGT <<EOF
user anonymous pass
hash
bin
cd $DIRTGT
put "$1"
bye
4

1 に答える 1

0

多くの場合、プログラムでは stdout と stderr がリダイレクトされているため、特に指示がない限り、bashdb はその出力を tty に書き込もうとします。bashdbは、コマンドを実行しているコンソールを決定しttyます。

通常、 bashdbを root として実行する必要はありません。しかし、ここでの謎の理由により、bashdbを実行しているユーザーは、登録されている tty に書き込むことができません。あれは:

 echo hi > $(tty)

おそらく同じ「許可が拒否されました」と表示されます。おそらくls -l $(tty)そこに何があるか教えてくれるでしょう。

ただし、コメントで提案されているように、sudo などを介して root として実行することでこれを回避できます。

sudo bashdb --  putxen.sh

別の回避策は、実行時にリストされるttyなどのグループにユーザーを追加することですls -l $(tty)

于 2015-10-22T23:21:25.830 に答える