我試圖在我的主目錄中建立一個目錄,但 shell 本身不斷崩潰。我有權寫入該目錄。我可以透過觸摸在目錄中建立檔案。我可以在 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 崩潰。