创建别名时出现问题,收到奇怪的消息

创建别名时出现问题,收到奇怪的消息

[审阅者:请注意,投票结束后该问题已被完全重写。]

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

但自从我尝试之后,每次打开终端时都会看到以下消息。

我添加了一些 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
~$ 

这很令人困惑;它没有显示错误,但是因为我的别名不起作用,所以
我认为我做错了什么 - 我不知道是什么!

答案1

可能你定义了这些别名.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

答案2

错误信息看起来很有趣

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

是的!

mat内置命令 alias 尝试按要求显示三个别名、=和的定义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.

相关内容