Bash 连接solaris服务器时出现pssh错误

Bash 连接solaris服务器时出现pssh错误,bash,ssh,solaris,Bash,Ssh,Solaris,我正在使用pssh在远程服务器上运行脚本。对于linux,我没有遇到问题,但是对于solaris,我在运行脚本时遇到了问题 我使用shebang来使用bashshell,它使用的是sh shell,这导致了这个问题 # cat test.sh #!/usr/bin/env bash UNAME=$(uname) if [ $UNAME = SunOS ]; then echo SunOS fi # ssh host1 'bash -s' <test.sh SunOS

我正在使用pssh在远程服务器上运行脚本。对于linux,我没有遇到问题,但是对于solaris,我在运行脚本时遇到了问题

我使用shebang来使用bashshell,它使用的是sh shell,这导致了这个问题

# cat test.sh 
#!/usr/bin/env bash

UNAME=$(uname)
if [ $UNAME = SunOS ]; then 
    echo SunOS
fi


# ssh host1 'bash -s' <test.sh 
SunOS

# pssh -H host1 -i -I <test.sh 
[1] 04:15:47 [FAILURE] host1 Exited with error code 2
Stderr: Pseudo-terminal will not be allocated because stdin is not a terminal.
-sh: syntax error: `UNAME=$' unexpected
# 
#cat test.sh
#!/usr/bin/env bash
UNAME=$(UNAME)
如果[$UNAME=SunOS];然后
回声苏诺斯
fi

#ssh host1'bash-s'Linux和Solaris都会忽略仅在运行可执行文件时处理的shebang,而不是在读取stdin时处理的shebang。Linux
sh
实际上是
bash
,因此支持您使用的语法

更简单的解决方法是修复脚本,使其可移植到任何shell:

UNAME=`uname`
if [ "$UNAME" = SunOS ]; then 
    echo SunOS
fi

或者,您可以将远程用户的默认shell更改为更标准的shell,例如
ksh
bash

Solaris box是否安装了
bash
是的。使用
ssh
命令工作正常,没有任何问题。但只有
pssh
命令有问题