mkdir 导致 bash 崩溃

mkdir 导致 bash 崩溃

我试图在我的主目录中创建一个目录,但 shell 本身一直崩溃。我有写入目录的权限。我可以通过 touch 在目录中创建文件。我可以在 csh 中创建目录。当我尝试使用 bash 时,我得到了一个相当大的核心转储(~59M),但由于 bash 是二进制文件,回溯不是很有用(只是大量的“execute_command_internal()”调用)。我正在创建的目录的名称似乎并不重要。我可以在其他目录中尝试,但得到了同样奇怪的行为。我可以使用 su 来模拟可以在我的目录中创建目录的另一个用户(一旦我设置了允许这样做的权限),但我自己无法做到这一点,否则 bash 会崩溃。我试过重新启动机器。

我真的很困惑。有人知道这可能是什么吗?或者我可以采取进一步措施来解决问题吗?

Xubuntu 14.04,Bash 4.3.11(1)-发布

编辑:BASHOPTS = checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath

该命令只是mkdir a或类似的东西。

编辑2:

ldd /bin/mkdir产量:

linux-vdso.so.1 =>  (0x00007ffff55fd000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fadc606a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fadc5ca4000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fadc5a65000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fadc5861000)
/lib64/ld-linux-x86-64.so.2 (0x00007fadc62ab000)

答案1

我是个白痴。

我从某处复制了一个如下所示的 bash 函数:

md() 
{
    [ $# -eq 0 ] && { echo "$0 dirname [permissions]"; return; }
    [ -d "$1" ] && { echo "%1 already exists!"; return; }
    mkdir -m ${2:-0755} -p "$1"
}

问题是我以前有一个类似的别名,alias md="mkdir"当 bash 解析新的 bash 函数时,它将 md() 扩展为 mkdir(),并且该函数变得无限递归并使 shell 崩溃。

相关内容