You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell通过SSH远程执行Linux脚本时共享库找不到问题求助

问题原因
  • 远程SSH执行命令时默认启动的是非登录、非交互式shell,不会加载~/.bashrc、~/.bash_profile等用户自定义环境变量配置文件
  • 本地登录Linux执行脚本时,已经将自定义共享库的路径添加到了LD_LIBRARY_PATH环境变量中,而远程执行时该变量没有加载对应路径,导致程序找不到依赖的.so文件
  • 额外的TERM environment variable not set报错也是因为非交互式shell没有默认设置TERM变量导致的
解决方案

方案1:修改start.sh脚本,主动设置环境变量(最推荐,不依赖执行环境)

在脚本最开头添加环境变量配置,直接把依赖的库路径和TERM变量写死在脚本内,避免不同执行环境的差异:

#!/bin/bash
# 显式指定共享库搜索路径,路径替换为你实际存放libentity.so、libboost.so的目录,当前目录可以写./
export LD_LIBRARY_PATH=./:/home/iris/your_app_path:$LD_LIBRARY_PATH
# 解决TERM变量未设置的报错
export TERM=xterm

echo
echo "Running comms.exe"
./comms.exe&

echo
echo "Running abc.exe"
./abc.exe&

echo
echo "Running PM2"
pm2 start

exit 0

如果你的共享库路径已经配置在~/.bashrc里,也可以直接在脚本开头加source ~/.bashrc导入所有环境变量。

方案2:修改plink执行命令,强制启动登录shell加载配置

执行plink时指定启动登录式bash,自动加载用户的环境变量配置,命令修改为:

plink -pw tpstps iris@192.168.5.58 "bash -l ./start.sh"

方案3:将自定义共享库路径加入系统全局库配置(永久生效,适合固定部署的环境)

如果你的程序是固定部署在该Linux设备上,可以直接把库路径加入系统全局配置,所有用户、所有执行方式都能识别:

  1. 找到你存放libentity.so.5.4.beta和libboost_serialization.so.1.59.0的目录,例如为/home/iris/app/lib
  2. 用root权限执行以下命令写入配置:
echo "/home/iris/app/lib" >> /etc/ld.so.conf.d/custom-app.conf
  1. 刷新系统库缓存生效:
ldconfig

内容的提问来源于stack exchange,提问作者Muhammad Waris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 11:51:02