将别名交换到cygwin bash中的函数时出错

时间:2016-04-26 23:28:25

标签: bash cygwin

问题: 在.bashrc文件中重新创建别名作为函数时,如果函数的名称与别名的先前名称相同,则会发生错误。

详细信息:

  • 我已从.bashrc文件中删除了先前的别名

  • 将函数名称更改为之前未使用的名称时,它可以正常工作

  • 文件中较高的代码似乎也没有错误
  • [编辑] 我还可以运行.bashrc文件中不再存在的旧别名

示例:

更改时:

alias npp='(/c/SolsApplications/NotePad++/notepad++.exe &> /dev/null &)'

对此:

npp()
{
    if [[ $1 != null ]]; then
        ('/c/SolsApplications/NotePad++/notepad++.exe' $1 &> /dev/null &)
    else
        ('/c/SolsApplications/NotePad++/notepad++.exe' &> /dev/null &);
    fi
}

刷新.bashrc文件时发生以下错误:

bash: /c/Users/Owner/.bashrc: line 33: syntax error near unexpected token `('

bash: /c/Users/Owner/.bashrc: line 33: `npp()'

我尝试了什么:

  • 清除我的.bash_history文件
  • 重新启动bash
  • 搜索互联网
  • 添加如下空格:" npp()"

1 个答案:

答案 0 :(得分:3)

别名是简单的前缀扩展。因此,如果您已经提供了别名*size = 0; // init before the loop while (*size <= 0) { std::cin >> *size; if (*size <= 0) // an error message can be appreciated { std::cout << "error on size value" << std::endl; } } ,则可以将您的函数定义更改为以下内容:

npp

找到添加此别名的位置并将其删除就足够了。如果您在执行此操作时遇到问题,请在定义函数之前立即取消它:

(/c/SolsApplications/NotePad++/notepad++.exe &> /dev/null &)() {
    if [[ $1 != null ]]; then
        ('/c/SolsApplications/NotePad++/notepad++.exe' $1 &> /dev/null &)
    else
        ('/c/SolsApplications/NotePad++/notepad++.exe' &> /dev/null &);
    fi
}

还要考虑使用日志记录启动交互式shell,并查看这些日志,以确定生成别名的位置(它应该来自点文件还是类似的):

unalias npp
npp() {
  ...
}