1

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

2 回答 2

1

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

于 2012-09-12T16:42:02.230 回答
0

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

我用 bash 发现以下工作...将您的功能放入遥控器上的 .bashrc 中:

foo_func()
{
    echo Hello World
}

然后在本地:

ssh user@remote bash -l -c foo_func

指示 bash作为bash -l登录 shell(采购启动文件)运行,然后-c告诉 shell 执行 string foo_func

于 2014-04-23T16:59:47.000 回答