![Cyberduck 中的“stdin:不是 tty”错误](https://linux22.com/image/131574/Cyber%E2%80%8B%E2%80%8Bduck%20%E4%B8%AD%E7%9A%84%E2%80%9Cstdin%EF%BC%9A%E4%B8%8D%E6%98%AF%20tty%E2%80%9D%E9%94%99%E8%AF%AF.png)
我正在使用 cyberduck(GUI SCP 客户端)。
通过我发送的命令:
chown -R username:username path/sp_furnicom17
出现以下错误:
stdin: is not a tty
我究竟做错了什么?
答案1
通常是这样的消息
stdin: is not a tty
当使用诸如scp
、rsync
或 SFTP 之类的东西时,意味着目标系统的登录脚本中存在某些内容,假定所有会话都将具有 TTY。这是不正确的:非交互式登录(例如scp
或rsync
SFTP 即可)不会有 TTY。
如果您的登录脚本有任何尝试更改终端设置或执行任何其他输入/输出的内容,则应以会话是否具有 TTY 为条件。例如,如果您的~/.[bash_]profile
或.bashrc
脚本具有以下命令:
echo "Today's fortune cookie:"
fortune
它们应该改为:
if tty -s
then
echo "Today's fortune cookie:"
fortune
fi