SSH2开启会话时指定启动文件可行性分析
在翻看inshellinsense代码时看到is建立本地终端时有控制加载指定目录下的启动文件。因此我在想SSH2连接Web 终端会话是否也可以呢,这里讨论下可行性。
inshellisense的做法
以bash为例
1 | shellArgs = ["--init-file", path.join(shellFolderPath, "shellIntegration.bash")]; |
可以看到实现的原理是spawn的第二个参数传入了shell参数,比如bash有–init-file参数
SSH2
https://github.com/mscdex/ssh2?tab=readme-ov-file#client-methods
查看SSH2的connect方法中并没有类似的参数,因此直接通过该方法是不可以。
这样不行的情况下,解决办法只有2个。
通过交互式会话执行source命令去加载集成脚本,但弊端是会有回显问题。
1
stream.write('');
通过执行命令修改启动shell文件,比如bashrc,将加载目标位置脚本的命令写入,这样之后连接后则不会有回显问题。
1
conn.exec('');
写在最后
done。