【问题标题】:Function defined in .bashrc not recognized.bashrc 中定义的函数无法识别
【发布时间】: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 to function _del(){ mkdir -p /home/lucas/.trash; mv $1 /home/lucas/.trash/; }; _del()'`
  • 你在你的 bashrc 中写了 'export -f del' 吗?

标签: bash function shell


【解决方案1】:

来自 OP 修改后的结尾段落:

原来会话保留了一个旧的同名别名,甚至 在再次采购.bashrc 之后。输入del 帮助我检测到它。跑步 unalias del 或开始一个新会话解决了这个问题。

(此答案的存在只是为了将此 Q 排除在 未回答 类别之外。)

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    相关资源
    最近更新 更多