加载的 .bashrc 出现 sftp 数据包长度错误

加载的 .bashrc 出现 sftp 数据包长度错误

我经常使用 WinSCP 将一些文件传输到我的个人服务器。但是,最近我遇到了臭名昭著的“数据包长度错误”错误,这是由于我的一个 echo 语句位于 .bashrc 文件中。因此,对于此:sftp 损坏错误我想问以下问题:

为什么系统抱怨 echo 语句(或导致错误的任何内容)存在于我的 .bashrc 文件中而不是我的 .bash_profile 中?

..如果 sftp 是 ssh 服务器生成的某种子进程,如上面的链接所示,它是否应该首先解析 .bash_profile 文件并抱怨它自己的 echo 语句?

提前致谢

答案1

我在我的.bashrc,如果它不是一个交互式 shell,它就会中止:

# if we're not an interactive shell, do nothing
[ -z "$PS1" ] && return

我想如果你想要长格式:

# if we're not an interactive shell, do nothing
if [ -z "$PS1" ]; then
    return
fi

这减轻了.bashrc_配置文件文件,因为.bashrc根据调用方式改变其响应方式。

答案2

.bash_profile执行登录 shell。 .bashrc执行交互式 shell。显然,WinSCP 必须在远程计算机上创建一个非登录交互式 shell。详细信息可以在INVOCATIONBash 手册页的部分中找到。

相关内容