我在我的.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 当时不是交互式的。如果你尝试在同一行定义别名,请参见这。