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

如何通过SSH和typeset将本地定义的多个函数传递至远程服务器

通过SSH和typeset传递多个bash函数到远程服务器

你当前的问题在于,getMachineHostName函数依赖getIPAddress,但你只传递了前者的定义到远程服务器,导致远程执行时找不到getIPAddress,无法正常运行。

要一次性传递多个函数,只需要在typeset -f后面列出所有需要传递的函数名即可(包括被依赖的函数)。修改后的命令如下:

ssh user@remote "$(typeset -f getIPAddress getMachineHostName); getMachineHostName"

原理说明

typeset -f 在bash中用于导出函数的完整定义,后面可以跟多个函数名,它会依次输出这些函数的代码。远程服务器接收到这些定义后,会先在当前shell环境中加载这些函数,之后调用getMachineHostName时,就能找到依赖的getIPAddress函数并正常执行。

扩展技巧

如果需要传递的函数数量很多,不想逐个列出,可以直接用typeset -f(不带参数)导出当前shell中所有已定义的函数,但这样会包含所有函数(包括你可能不需要的),所以如果是特定的几个函数,建议明确列出名称更稳妥。

你也可以先在远程验证函数是否被正确传递,比如执行以下命令:

ssh user@remote "$(typeset -f getIPAddress getMachineHostName); type getIPAddress; type getMachineHostName; getMachineHostName"

type命令会输出函数的定义,确认两个函数都已被加载,之后再执行目标函数。

内容的提问来源于stack exchange,提问作者Rachit Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:00:52