Скрипт для очистки корзины не работает

Я создал скрипт корзины на Minix. Я перемещаю файл, который будет удален, в папку, а не удаляю ее. Я использовал команду alias в команде rm, чтобы использовать скрипт вместо rm. Проблема сейчас в том, что я должен очистить корзину. Я написал этот сценарий:

#!/bin/sh
unalias rm
rm -r "/home/recyclebin/*"
alias rm='/home/scriptrm.sh'
#

В этом сценарии я отменяю команду rm, так что я могу использовать ее снова, затем очищаю корзину, а затем снова псевдоним rm со сценарием, который перемещает файлы в корзину. Когда я запускаю этот скрипт, он ничего не делает. Я пытался только запустить скрипт для unalias rm, но rm продолжает с псевдонимом. Кто-нибудь знает, что происходит?

Спасибо.

1 ответ

Решение

Несколько вещей, чтобы исправить.

  1. Вы (дважды) цитируете свой шар (*), поэтому он не будет расширяться до чего-либо (кроме случаев, когда у вас есть файл с именем * там).

  2. Ваш сценарий будет выполняться в подпроцессе, поэтому установка / сброс псевдонимов и т. Д. Не будет иметь никакого эффекта в родительской оболочке, которая вызывает ваш сценарий. IOW, вам не нужно добавлять псевдоним обратно в исходную форму в конце. И он не наследует псевдонимы вашей существующей родительской оболочки. Они не экспортируются от родителя.

Другие вопросы по тегам