如何通过 SSH 执行远程别名?

如何通过 SSH 执行远程别名?

如何通过 SSH 执行远程别名?


例如,有一个相当复杂的别名rkhunter,我想在一个命令中执行它,ssh如下所示:

ssh user@server_ip -p port_number -t alias_name_defined_on_server

确切地说,别名是由该特定的.bash_aliases来源定义的。.bashrcuser

答案1

一个可行的答案发表于SO,引用如下:

引用自手册页bash当 shell 不具有交互性时,别名不会展开,除非使用 shopt ... 设置 Expand_aliases shell 选项

因此,IMO 最简单的方法是将以下几行放在文件的顶部/home/<user>/.bashrc

# comment out the original line
# [ -z "$PS1" ] && return

if [ -z "$PS1" ]; then
  shopt -s expand_aliases
  # alias ls='ls --color=always'
  # return
fi

保存并退出。现在就可以ssh user@host "your_alias" 成功运行了。

注意:如果您持有类似以下内容,请注释当 shell 不交互式时~/.bashrc的行:return

# If not running interactively, don't do anything
 case $- in
     *i*) ;;
       *) return;;
 esac

相关内容