Согласитесь с SiegeX (кто избил меня к нему :))
Объяснить поведение:
Bash только запустится в интерактивном режиме, если его станд. в и будет нормальными терминалами. Это не имеет место при передаче по каналу в той начальной команде.
Можно использовать -c
опция обеспечить команды, но это также устраняет интерактивный режим.
Если Вы действительно хотите сохранить пользовательское дистанционное управление, просто добавьте некоторые операторы теста/источника в строке rcfile к источнику ~/.bashrc
и /etc/bashrc
если файлы существуют.
В моей системе (Debian; Linux 2.6; rm --version
GNU coreutils 8.5 отчетов), является ли dir точкой монтирования, следующее, удаляет файл, но не dir или ссылку, и дает мне ту же ошибку, которую Вы видели:
# mkdir dir && touch dir/file && ln -s dir link
# rm -r link/
rm: cannot remove `link': Not a directory
# ls
dir link
# ls -l dir
total 0
# mount .../scratch_filesystem dir
# touch dir/file
# rm -r link/
rm: cannot remove `link': Not a directory
# ls
dir link
# ls -l dir
total 0
Если я следую за Вами правильный, Ваш rm -r link/
команда не удаляет файл, если dir / не является точкой монтирования. Если это так, я думаю, что Вы видите ошибку в rm
. Нет никакого серьезного основания для точки монтирования для изменения ее поведения как этот.
Было бы интересно знать что версия rm
Вы используете.
rm
та же версия как Ваш – tshepang 29.01.2011, 09:55env -i /bin/rm -r link/
вместо простоrm -r link/
? Т.е. очистите среду и избегайте любых потенциальных псевдонимов оболочки. – Jander 29.01.2011, 10:11env
вещь... Я желаю, чтобы я попробовал, когда у меня все еще была проблема. – tshepang 07.03.2011, 20:40