bashdb启动错误:bashdb/lib/setshow.sh:第91行:/dev/pts/2:权限被拒绝



我正在尝试在CentOS 4.1上使用bashdb(不幸的是,我无法选择其他/更新的操作系统)。我安装了bash 4.2,然后安装了bashdb 4.2-0.8。配置、制造、检查或安装都没有抱怨:一切看起来都很好。

但是,尝试将bashdb用作"bash-debugger myscript"或"bashdb myscript"总是会出现以下错误:

[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。

任何关于如何进行的建议都将不胜感激。我正在处理一个支离破碎的shell脚本,我对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

由于程序经常重定向stdout和stderr,除非另有指示,否则bashdb会尝试将其输出写入ttybashdb确定运行tty命令的控制台。

通常,您不需要以root身份运行bashdb。但由于这里神秘的原因,您运行bashdb的用户无法写入注册到其中的tty

 echo hi > $(tty)

可能会给你同样的"权限被拒绝"。也许ls -l $(tty)会告诉你上面有什么。

然而,正如评论中所建议的那样,您可以通过以root身份运行来解决这个问题,例如通过sudo:例如

sudo bashdb --  putxen.sh

另一种解决方法是将用户添加到组中,例如运行ls -l $(tty)时列出的tty

最新更新