通过ssh远程调用shell-sourced函数

时间:2012-09-12 16:36:50

标签: bash shell ssh

我有通过远程主机A上的.bashrc文件获取的函数。 如果我在远程主机A上使用“which”,我将获得函数体作为输出。 我需要从另一个主机B远程通过ssh运行它。 目前,我的所有尝试都以“命令未找到错误”结束。 我已经尝试过了

ssh A  "source /home/user/.bashrc && function "  

,这没有用。 还尝试强制ssh用-t键来伪造伪tty。两个主机上的SHELL都是bash。 主机A上的ssh localhost仍保持功能状态可用。

输出:

[user@hostA ~]$ which status
status is a function
status ()
{
    dos -s $*
}


[user@hostB ~]$ ssh hostA " source  /home/user/deploy/bin/_bashrc && status all "
ls: : No such file or directory
bash: status: command not found

2 个答案:

答案 0 :(得分:1)

基本上,你不能。为此,您需要复制远程主机上的源文件并在其中进行源代码。请注意,您的文件也可以在其他一些文件中获取......这几乎就像在远程主机上运行本地程序一样。

答案 1 :(得分:0)

诀窍是让远程端将包含该函数的文件正确加载到shell环境中。

我发现bash,以下作品...... 将您的函数放入遥控器上的.bashrc:

foo_func()
{
    echo Hello World
}

然后在当地:

ssh user@remote bash -l -c foo_func

bash -l指示bash作为登录shell运行(获取启动文件),然后-c告诉shell执行字符串foo_func