【发布时间】:2017-06-21 20:15:14
【问题描述】:
我正在尝试使以下功能在 bash 会话中可用,因此我将其添加到 .bashrc:
function del () { mkdir -p ~/.trash; mv "$@" ~/.trash; }
这在 shell 脚本中运行良好,但是当我从终端调用 .bashrc 版本时,例如:
$ del test.txt
我总是这样:
bash:意外标记 `test.txt' 附近的语法错误
我每次更改文件时都在执行source ~/.bashrc,并且我已经尝试了不同的方法来编写函数,它有什么问题?它在 .sh 文件中工作,所以可能需要 .bashrc 的特殊语法?
编辑
事实证明,即使在再次获取 .bashrc 之后,会话仍保留了同名的旧别名。 type del 帮助我检测到它。运行unalias del 或启动一个新会话解决了这个问题。
【问题讨论】:
-
我无法重现此错误。不确定这是否会提供任何有意义的信息,但
declare -f del的输出是什么? -
在获取
~/.bashrc之后,命令type del输出什么? -
@chepner 它输出
del () { mkdir -p ~/.trash; mv "$1" ~/.trash } -
@Dario 它是
del is aliased tofunction _del(){ mkdir -p /home/lucas/.trash; mv $1 /home/lucas/.trash/; }; _del()'` -
你在你的 bashrc 中写了 'export -f del' 吗?