Windows Plink不在connect上提供bashrc或bash_配置文件

Windows Plink不在connect上提供bashrc或bash_配置文件,windows,linux,ssh,plink,Windows,Linux,Ssh,Plink,我试图在windows上使用plink作为ssh替代方案,但我发现,当plink连接到远程linux计算机时,它并没有源.bash_profile或.bashrc。 我应该创建一个不同的点文件吗?还是有其他选择 例如,我的bashrc文件将一个目录添加到我的路径中。这个目录包含我想要使用的额外程序,一个是python 这是行不通的: plink host python 其中: plink host "source .bashrc;python" 当我在没有命令参数的情况下使用plink时,它

我试图在windows上使用plink作为ssh替代方案,但我发现,当plink连接到远程linux计算机时,它并没有源.bash_profile或.bashrc。
我应该创建一个不同的点文件吗?还是有其他选择

例如,我的bashrc文件将一个目录添加到我的路径中。这个目录包含我想要使用的额外程序,一个是python

这是行不通的:

plink host python
其中:

plink host "source .bashrc;python"
当我在没有命令参数的情况下使用plink时,它会生成.bash_profile文件,一切正常,但仅仅发送命令plink似乎不会生成这两个文件


有解决方法吗?

如果您只是通过ssh或plink连接到远程主机,它将启动登录帐户的默认shell。如果该shell是bash,bash将自动生成.bash\u概要文件

如果您通过ssh或plink连接到远程主机,请求执行命令,ssh将尝试仅执行该命令

您想要实现的目标可以通过使用强制命令来实现。另见此处:

将强制命令设置为执行以下两项操作的脚本:

  • 获取.bash_配置文件
  • 运行原始命令(env vars$SSH\u原始命令或$SSH2\u原始命令)

  • 被接受的答案帮助我用plink解决了同样的问题。 下面是一个更详细的信息,可能会在将来帮助人们:

    当ssh连接使用plink运行单个命令时,bash不会作为“交互式登录shell”调用,因此它不会运行/etc/profile、~/.bash\u profile、~/.bash\u login或~/.profile(请参阅bash手册页面)

    出于我的目的,我需要在plink命令行中传递命令之前运行~/.profile

    可以将强制命令添加到该密钥的授权密钥文件中(请参阅sshd手册页面)。强制命令(例如,运行~/.profile)会停止它运行plink指定的命令,因此为了让它同时执行这两个命令,强制命令应该是执行一个运行.profile的脚本,然后是原始plink命令。后者存储在环境变量$SSH\u ORIGINAL\u命令中,因此脚本可以执行以下操作

    source .profile
    $SSH_ORIGINAL_COMMAND
    
    在~/.ssh/authorized_keys文件中指定脚本,如下所示,在密钥之前,在同一行上:

    command="source forced_command.script" ssh-rsa A3AABzaC1yc...
    

    我想知道为什么创建一个shell脚本来复制bash_profile调用,然后运行您希望plink调用的任何命令并不容易,直到我意识到这个答案“教会所有plink命令如何钓鱼”,可以这么说,对吗?也就是说,如果每次运行相同的命令,则.sh路由更容易,但每个命令或命令批都需要.sh,而这可以全面解决缺少的概要文件。