gpt4 book ai didi

java - $PATH 在使用 ssh 和使用 java 时是不同的

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:52 27 4
gpt4 key购买 nike

当我通过 ssh 连接到服务器时,我可以看到 PATH 变量已根据需要设置,并且需要添加一些自定义文件夹。

当我尝试使用 Java 中的 com.jcraft.jsch.JSch 库连接到同一台服务器时,PATH 被设置为其他内容。/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

这似乎是开箱即用的值,并且不包括所需的自定义文件夹。除非我提供可执行文件的完整路径,否则我在通过 Java 连接时不需要执行任何命令。我需要连接到不同的服务器,它们可能在不同的位置设置了可执行文件,所以这不是一个选项。

我希望有人能帮我弄清楚为什么当我使用 Java 连接时 ./bashrc 文件不运行。我是否必须手动运行它?

提前致谢。

最佳答案

当您使用命令行 SSH 连接时,您的“默认命令”是您在远程计算机上为您的用户名设置的任何 shell(可能是 bash,您可以使用 更改它chsh),然后 bash 导入您的 .bashrc 文件。

当您使用 JSch 连接时,您打开的 Channel 类型将决定您的连接将执行的操作。根据我对 JSch 工作原理的了解,很可能 JSch 在打开 SSH session 时没有打开 bash

作为一般经验法则,如果SSH 守护程序配置为允许它。这将始终在 SSH 运行任何命令(包括 shell)之前导入,因此它对于设置您的 PATH 更加可靠。

更多信息可以在 this Unix StackExchange post 中找到关于 .bashrcPATH 和 SSH,包括我的答案的一些替代方案。

关于java - $PATH 在使用 ssh 和使用 java 时是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47762365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com