Первое: понять проблему:
$ rm() { /bin/rm --interactive=always "$@"; }
$ mkdir -p rmtest && touch rmtest/a rmtest/b rmtest/c rmtest/d && rm -rf rmtest
$ rm() { /bin/rm "$@" --interactive=always; }
$ mkdir -p rmtest && touch rmtest/a rmtest/b rmtest/c rmtest/d && rm -rf rmtest
/bin/rm: descend into directory 'rmtest'? y
/bin/rm: remove regular empty file 'rmtest/b'? y
/bin/rm: remove regular empty file 'rmtest/a'? y
/bin/rm: remove regular empty file 'rmtest/d'? y
/bin/rm: remove regular empty file 'rmtest/c'? y
/bin/rm: remove directory 'rmtest'? y
Это --interactive=always
(или -I
или -i
) может быть сделано, по крайней мере, используя
а) функция
б) обычный скрипт-обертка
КСТАТИ: Это не может быть сделано с помощью псевдонима, потому что там аргумент --interactive
будет первым.
Вам нужно будет проверить все это, чтобы избавиться от этого поведения, или вы можете явно вызвать, например, /bin/rm
или /usr/bin/rm
Проверьте, есть ли функция оболочки rm
set | grep "^rm ()"
избавиться от этого с
unset rm
Или измените его так, чтобы сначала был интерактивный аргумент, чтобы его можно было переопределить
rm() { /bin/rm --interactive=always "$@"; }
Найдите скрипт оболочки:
which rm
или же
type -p rm
затем
file $whatever_path_was_shown
например
file /bin/rm
если это сценарий оболочки
$EDITOR /bin/rm
и переместить --interactive
аргумент вперед
Если у вас нет root-доступа, спрячьте скрипт оболочки, используя функцию или псевдоним, указывающий на исходный rm