在 Ubuntu 20.04.2 上通过 ssh 使用跳转服务器时,在 .bash_aliases 中定义别名会失败

在 Ubuntu 20.04.2 上通过 ssh 使用跳转服务器时,在 .bash_aliases 中定义别名会失败

启动了 AWS Ubuntu 20.04.2 服务器。该服务器位于跳板服务器后面。

服务器启动后,我运行:

sudo update
sudo upgrade

并重启服务器。之后,创建一个~/.bash_aliases文件并添加以下别名:

alias lsd='ls -a -g --group-directories-first'

保存.bash_aliases后,重新加载.bashrc:source ~/.bashrc

当使用别名时,出现以下错误:

xxx@ip-1-2-3-4:~$ lsd
's: unrecognized option '--group-directories-first
Try 'ls --help' for more information.

验证了以下内容:

  • 完整命令将在没有别名的情况下运行
  • 别名在直接添加到 ~/.bashrc 文件时有效

还验证.bashrc了读取别名:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

问题:如何通过 ssh 使用 .bash_aliases 文件?

我读过类似的问题,但那里的解决方案似乎不起作用:为何我的别名无法通过 ssh 起作用?

我以前使用过 Windows,现在才开始在 Linux 领域工作;请温柔一点。

编辑上下文

.bash_aliases文件是在通过 ssh 进入服务器时使用 MobaTextEditor 在 Windows 上本地编辑的。尽管在服务器上创建了空文件,但由于文件为空,因此编辑器中并未隐含 Unix 样式编码。使用 MobaTextEditor 编辑并保存回服务器后,将 Windows 编码添加到文件中。

答案1

错误消息中引号的奇怪位置表明 .bash_aliases 文件具有 DOS 样式的 CRLF(即\r\n)行结尾,例如。

$ printf '%s\r\n' "alias lsd='ls -a -g --group-directories-first'" >> ~/.bash_aliases

$ file ~/.bash_aliases
/home/steeldriver/.bash_aliases: ASCII text, with CRLF line terminators

$ . ~/.bash_aliases
$
$ lsd
's: unrecognized option '--group-directories-first
Try 'ls --help' for more information.

您可以通过在文本编辑器中设置适当的 UNIX 行终止或通过传递文件来修复此问题dos2unix

$ dos2unix ~/.bash_aliases
dos2unix: converting file /home/steeldriver/.bash_aliases to Unix format...

然后您将需要再次获取该文件。

相关内容