[审阅者:请注意,投票结束后该问题已被完全重写。]
我最近发现了如何在 中为 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.