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