为何我的别名无法通过 ssh 起作用?

为何我的别名无法通过 ssh 起作用?

我在我的.bashrc

alias l.='ls -d .* --color=auto'

它非常有用:)但它不起作用ssh

$ ssh localhost l.
bash: l.: command not found

这是为什么?

答案1

尝试:

ssh localhost -t bash -ci l.

笔记:

  • 别名应该位于~/.bashrc远程服务器上,而不是本地机器上。

  • -i选项指示bash运行交互式 shell。默认情况下,别名仅在交互式 shell 中启用。

  • 选项-t告诉ssh分配一个伪终端。如果没有这个,bash在交互模式下启动时会发出警告消息。这还会启用ls颜色。如果没有它,您必须使用--color=always,请参阅man ls

  • 还有另一种方法可以启用别名,而无需设置交互标志,即shopt -s expand_aliases。因此您可以尝试:

    ssh localhost 'bash -c "shopt -s expand_aliases; l."'
    

    然而:

    • .bashrc可能只在 shell 是交互式的情况下才定义别名。在此示例中,shell 当时不是交互式的。

    • 如果你尝试在同一行定义别名,请参见

相关内容