ssh执行单行命令 alias 失效
场景
使用ssh
命令链接远程服务器后执行.bashrc
中定义的alias
命令, 提示命令不存在.
ssh root@10.0.0.1 ll
# ll: command not found
但是使用ssh
命令登录后, 在交互界面是可以正常执行的.
解决
因为shell
在非交互模式下, alias
默认是不加载的. 不过可以通过shopt
来修改扩展选项的开关. 因此, 解决方式就是我们在加载alias
之前将其开启就好啦. 修改.bashrc
如下:
# 判断当前是交互界面
# 当然了, 要是不判断直接打开也没什么问题
if [ -z "$PS1" ]; then
# 强行将 alias 扩展开启
shopt -s expand_aliases
fi
alias ll="ls -l"
OK, 这个时候再执行命令ssh root@10.0.0.1 ll
, 就能正常看到结果啦