为什么我的别名不适用于ssh?
我的.bashrc
定义了一个别名
alias l.='ls -d .* --color=auto'
它非常有用:)但它不能通过ssh
工作:
$ ssh localhost l. bash: l.: command not found
这是为什么?
尝试:
ssh localhost -t bash -ci l.
注意:
-
别名应位于远程服务器上的
~/.bashrc
,而不是本地计算机上。 -
-i
选项告诉bash
运行交互式shell。 默认情况下,仅在交互式shell中启用别名。 -
-t
选项告诉ssh
分配伪tty。 如果没有这个,bash
在交互模式下启动时会发出警告消息。 这也使ls
颜色。 没有它,你必须使用--color=always
,见man ls
。 -
还有另一种方法可以启用别名,而无需设置交互标志,即
shopt -s expand_aliases
。 所以你可以尝试:ssh localhost 'bash -c "shopt -s expand_aliases; l."'
然而:
-
你的
.bashrc
可能只定义别名,如果它的shell是交互式的。 在此示例中,shell在那时不会是交互式的。 -
如果您尝试在同一行上定义别名,请参阅此内容 。
-