主机B定义了别名
alias command='ps -aef|egrep "a|b"|egrep -v "c|grep|ksh|sshd|ssh|ps |tail|bash|su \-"'
如何从方框A调用此别名?
ssh user@B "command"
不起作用。
答案 0 :(得分:2)
将其定义为函数:
mycommand() {
ps -aef | \
egrep "a|b" | \
egrep -v "c|grep|ksh|sshd|ssh|ps |tail|bash|su -"
}
...然后告诉shell在生成远程命令时向该函数发出源:
ssh user@B "$(declare -f mycommand); mycommand"
你可以用别名做类似的事情,但是eww:
# define alias locally
alias mycommand='ps -aef|egrep "a|b"|egrep -v "c|grep|ksh|sshd|ssh|ps |tail|bash|su \-"'
ssh user@B bash -s <<EOF
shopt -s expand_aliases # enable aliases on remote shell
$(alias -p) # dump all aliases to remote shell
mycommand # invoke desired alias
EOF
请注意expand_aliases
shell选项:默认情况下别名仅在交互式shell 中可用,并且使用作为参数传递的命令行调用的shell不是交互式的。
使用typeset -f
而非declare -f
列出功能:
ssh user@B "$(typeset -f); mycommand"