J'essaie de créer un répertoire dans mon répertoire personnel mais le shell lui-même continue de planter. J'ai la permission d'écrire dans le répertoire. Je peux créer des fichiers dans le répertoire via le toucher. Je peux créer des répertoires dans csh. Lorsque j'essaye avec bash, j'obtiens un vidage de mémoire assez important (~ 59M), mais parce que bash est le binaire, la trace n'est pas très utile (juste beaucoup d'appels "execute_command_internal ()"). Le nom du répertoire que je crée ne semble pas avoir d'importance. Je peux essayer dans d'autres répertoires et j'obtiens le même comportement étrange. Je peux utiliser su pour émuler un autre utilisateur qui peut créer des répertoires dans mon répertoire (une fois que j'ai défini les autorisations pour l'autoriser), mais je ne peux pas le faire moi-même sans planter bash. J'ai essayé de redémarrer la machine.
Je suis vraiment déconcerté. Quelqu'un a-t-il une idée de ce que cela pourrait être ou d'autres choses que je peux faire pour le dépanner?
Xubuntu 14.04, Bash 4.3.11 (1) -release
EDIT: BASHOPTS = checkwinsize: cmdhist: complete_fullquote: expand_aliases: extglob: extquote: force_fignore: histappend: interactive_comments: login_Shell: progcomp: promptvars: sourcepath
La commande est simplement mkdir a
ou quelque chose de similaire.
EDIT 2:
ldd /bin/mkdir
donne:
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)
Je suis un idiot.
J'avais copié une fonction bash d'un endroit qui ressemblait à ceci:
md()
{
[ $# -eq 0 ] && { echo "$0 dirname [permissions]"; return; }
[ -d "$1" ] && { echo "%1 already exists!"; return; }
mkdir -m ${2:-0755} -p "$1"
}
Le problème était que j'avais précédemment eu un alias comme alias md="mkdir"
donc quand bash a analysé la nouvelle fonction bash, il a étendu md () à mkdir () et la fonction est devenue infiniment récursive et a planté le shell.