ホーム ディレクトリにディレクトリを作成しようとしているのですが、シェル自体がクラッシュし続けます。ディレクトリへの書き込み権限があります。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
コマンドは justmkdir 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() に拡張され、関数が無限再帰になり、シェルがクラッシュしたことでした。