为什么我的别名不适用于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在那时不会是交互式的。

    • 如果您尝试在同一行上定义别名,请参阅此内容 。