我正在尝试为我的 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
。