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

Lin*_*eak 5 command-line bash ssh alias

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


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

ssh user@server_ip -p port_number -t alias_name_defined_on_server
Run Code Online (Sandbox Code Playgroud)

确切地说,别名是.bash_aliases.bashrc该特定的来源定义的user

Yar*_*ron 3

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
Run Code Online (Sandbox Code Playgroud)

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

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

# If not running interactively, don't do anything
 case $- in
     *i*) ;;
       *) return;;
 esac
Run Code Online (Sandbox Code Playgroud)