1

当我在非交互式外壳中连接服务器时,我有一个需要获取的功能,但似乎没有合适的地方。

我希望能够做到这一点

ssh user@remote.com 'my_function'

我阅读了为什么 SSH 远程命令在手动运行时会获得更少的环境变量?并发现如果我在~/.ssh/environment文件中放置一个变量(如hi='hello'),我就能做到这一点

ssh user@remote.com 'echo ${hi}'

它会呼应的“你好”价值,我有点高兴;但是,我无法将函数放入~/.ssh/environment文件中,因为它不是那种文件:)

现在,我可以把我的

function hi {
    echo 'this is a function'
}

以便在非交互式外壳中获取它?

那我可以做

ssh user@remote 'hi'

它会输出“这是一个函数”

4

1 回答 1

0

如果你把函数放到你的 shell 的 rc 文件中,那么它取决于你的 shell。如果是 bash,请参见:

https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

最简单的解决方案是将您的函数放入您家中某处的单独文件中,然后在调用该函数之前对其进行源代码:

ssh user@remote.com '. ~/.my_functions.sh; my_function'

这应该独立于您是否从交互式会话中调用它。

于 2013-09-28T15:01:29.333 回答