У меня есть каталог, в котором я запускаю программу.
/usr/bin/my-dir
Мне нужно запустить программу из каталога. Поэтому я должен выполнить команду cd /usr/bin/my-dir ./my-program.
У меня есть скрипт, который с удаленной машины обновляет my-program следующим образом: rm -rf /usr/bin/my-dir mv my-program /usr/bin/my-dir
Проблема в том, что когда я подключаюсь к машине по ssh и нахожусь в каталоге /usr/bin/my-dir, скрипт завершается ошибкой, так как не может успешно выполнить rm -rf /usr/bin/my-dir (он удаляет все содержимое, но не сам каталог).
Есть ли способ обойти это (например, как-то настроить оболочку так, чтобы она позволяла удалять каталог, пока я в нем?) или какое-то другое решение? Сейчас я выхожу из каталога, запускаю скрипт, а затем возвращаюсь в каталог, но мне приходится делать это сотни раз в день — должен быть более эффективный способ.
решение1
На всякий случай, если это кому-то поможет. Оказывается, оболочка работает так: если текущий каталог удалить в другом экземпляре оболочки, а затем создать его заново и заполнить файлами, то исходная оболочка покажет пустой каталог.
Чтобы снова увидеть файлы, просто перейдите
cd .
Это привело к решению исходной проблемы, поскольку удалось не удалять сам каталог (а просто удалить и заменить определенные файлы).