我有通过远程主机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
答案 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
。