当我在非交互式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'
并输出'这是一个函数'
答案 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'
这应该独立于您从交互式会话中调用它。