Ответ @ jobin, как правило, правильный, но я добавлю некоторые другие ответы, которые могут быть в зависимости от того, что вы хотите сделать.
Если вы хотите изменить сценарий и хотите знать, что он безопасен, то вы хотите записать в новый файл, а не в существующий. Новый файл может быть расположен там, где был старый. Запишите новую версию в новый файл, а затем используйте ее, mv
чтобы переместить на место поверх старой. Файл, который был заменен, все еще существует, он просто не связан с каталогом. Ваш работающий скрипт может продолжать его использовать, и когда этот скрипт закрывает свой дескриптор файла, система знает, что может безопасно очистить файл (как сразу, так и позже).
Если вы хотите вести себя сценарием на лету, у вас есть более сложная проблема. Я ожидаю, что вам нужно встроить его в код скрипта. Сценарии Bash могут обрабатывать сигналы (например, могут отлавливать что-то подобное kill -USR1 [pid]
), а затем сценарий может ответить путем перезагрузки некоторого кода. Так что, возможно, вы можете получить функциональность, близкую к тому, что вы хотите, но не зная, что вам нужно, я не вижу веской причины для этого, и я подозреваю, что если вы хотите сделать что-то такое сложное, вы, вероятно, хотите более сложный язык программирования, чтобы сделать это в.
Если вы хотите взломать поведение запущенного скрипта, который не написан с учетом этого, то вам не повезло. Я бы не решался назвать любую задачу программирования невозможной, но если бы у вас были ресурсы и навыки для такой задачи, вы, вероятно, не стали бы спрашивать здесь.