Просто чтобы быть ясным со всеми другими ответами, !!
является частью механизма истории оболочки. Я думаю, что проблема не в sudo, а в вашей оболочке или, точнее, в вашей оболочке, когда вы являетесь пользователем root.
Прошло много времени с тех пор, как я играл с любым из BSD, но они, как правило, являются более «традиционными» UNIX, то есть они по-прежнему используют настоящую оболочку Bourne (читай: не такую особенную, как bash), как оболочку root. «Настоящая» оболочка Борна в данном случае означает отсутствие механизма истории. Это по причинам восстановления системы. (*)
Когда вы входите в систему как root, вы можете запустить оболочку с историей, либо выполните exec /bin/bash
либо exec /bin/tcsh
как вы пожелаете.
Раньше старый трюк состоял в том, чтобы иметь учетную запись root-эквивалента, обычно называемую «toor», которая имела оболочку входа в систему tcsh или bash, тот же домашний каталог и uid 0. Ты не будешь ругаться , ты sudo toor
, а потом будешь в bash. Я не уверен, что нового жарко, может быть,
(*) Причина, оболочка root является /sbin /sh и статически связана. Это означает, что он имеет минимальное количество зависимостей. Если ваша оболочка /bin /bash и имеет библиотечные зависимости от /usr, а теперь /usr работает, у вас нет оболочки. Если ваша оболочка - /sbin /sh, то если по крайней мере /sbin монтируется, вы можете сделать некоторую работу.