我应该在哪里放置函数,以便在非交互式ssh会话期间获取它们?

时间:2013-09-28 13:22:07

标签: linux shell ssh environment

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

我希望能够做到这一点

ssh user@remote.com 'my_function'

我看了Why does an SSH remote command get fewer environment variables then when run manually?并发现如果我在〜/ .ssh / environment 文件中放入一个变量(如 hi ='hello')我能够做到这一点

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

它将回显我的'hello'值,我有点高兴;但是,我无法将功能放入〜/ .ssh / environment 文件中,因为它不是那种文件:)

现在,我可以在哪里放

function hi {
    echo 'this is a function'
}

这样在非交互式shell中它将 sourced

然后我可以做

ssh user@remote 'hi'

并输出'这是一个函数'

1 个答案:

答案 0 :(得分: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'

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