创建别名时遇到问题,得到奇怪的消息

[审稿人:请注意,在结束投票后,这个问题已完全重写。]

我最近发现如何在~/.bashrc为bash定义别名。

但是自从我尝试了这个,我看到了随后的消息,我打开一个终端的时间很长。

我添加了一些bash别名给我,我试图使用别名创建快捷方式,但我不成功,并在每次打开一个新终端时设法得到以下消息。

 bash: alias: UIC: not found bash: alias: =: not found bash: alias: sudo openvpn --config ~/vpn/UIC-alopez78.ovpn: not found bash: alias: mat: not found bash: alias: =: not found bash: alias: cd /home/alexisblopez/MATLAB/R2014a/bin/: not found bash: alias: lab: not found bash: alias: =: not found bash: alias: ./matlab: not found ~$ 

令人困惑的是; 它没有说错误,但因为我的别名不起作用,
我想我做错了什么 – 我不知道是什么!

可能你在.bashrc文件中定义了这些别名

 alias UIC = 'sudo openvpn --config ~/vpn/UIC-alopez78.ovpn' alias mat = 'cd /home/alexisblopez/MATLAB/R2014a/bin/' alias lab = './matlab' 

您应该编辑.bashrc并删除=之前和之后的空格:

 alias UIC='sudo openvpn --config ~/vpn/UIC-alopez78.ovpn' alias mat='cd /home/alexisblopez/MATLAB/R2014a/bin/' alias lab='./matlab' 

保存更改并运行source .bashrc

错误消息看起来很有趣。
线条

 bash: alias: =: not found 

那就是: bash给我们的信息是它的内置命令, alias ,给它一个名为"="的消息“找不到"="

现在,涉及alias ,并且在一个错误的命令的地方有一个= 。 对于要被视为命令的= ,它必须是带有空格的单个单词。

并查看命令alias的语法(请参阅下面的help alias ),这是错误的:必须使用=周围没有空格,如下所示:

 alias foo='bar baz' 

因此,我们的想法是,有一些别名定义在=周围有额外的空间,它将alias的一个命令行参数分成三个参数。

我们来做一个实验:我们可以像这样复制你的错误信息吗?

 $ alias mat = 'foo bar' bash: alias: mat: not found bash: alias: =: not found bash: alias: foo bar: not found 

是!

alias builtin命令尝试按要求显示三个别名mat=foo bar定义,并抱怨不要找到它们。

解决方案:读取help alias ,找到别名定义,并删除=周围的空格。

 $ help alias alias: alias [-p] [name[=value] ... ] Define or display aliases. Without arguments, `alias' prints the list of aliases in the reusable form `alias NAME=VALUE' on standard output. Otherwise, an alias is defined for each NAME whose VALUE is given. A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded. Options: -p Print all defined aliases in a reusable format Exit Status: alias returns true unless a NAME is supplied for which no alias has been defined.