.profile 别名中的奇怪间距

.profile 别名中的奇怪间距

我正在尝试为我的 yocto linux 机器添加一些别名。出于测试目的,我将行alias ..='cd ..'和添加alias ps='ps -A'到新创建的~/.profile。当我使用 ssh 登录到我的设备时,同一文件中的环境变量被正确导出。别名已创建,但不起作用。

当我..这样做时,它会输出: No such file or directory,同时ps返回error: unsupported SysV option和 ps 命令的用法。

输出alias

'.='cd ..
's='ps -A

但是别名似乎是正确的,因为我可以执行unalias ..unalias ps删除相应的别名。

当我执行set -x然后执行..第一行时' cd '..,第二行的错误消息与之前相同。如果我ps现在执行,它会返回' ps '-A。所以问题很可能是奇怪的间距。我该如何解决这个问题?如果在 shell 中手动添加,相同的别名可以正常工作。

答案1

您的 ~/.profile 一开始可能混合了 Unix LF 和 Windows CR+LF 行尾,然后使用仅 LF 模式的文本编辑器进行编辑(将 CR 显示为常规字符),现在到处都是零散的“回车”字符。最有可能是这样的:

别名 ..='cd .. CR'LF
别名 ps='ps -A CR'LF

只需从文件中删除所有 CR 字符,例如使用sed 's/\r//g'或 Vim 的:%s/\r//g

相关内容