Odpowiedź @ jobin jest ogólnie poprawna, ale dodam kilka innych odpowiedzi, które mogą być do rzeczy, w zależności od tego, co chcesz zrobić.
Jeśli chcesz zmienić skrypt i chcesz wiedzieć, że jest bezpieczny, to chcesz napisać do nowego pliku, a nie do istniejącego. Nowy plik może być zlokalizowany tam, gdzie był stary. Napisz nową wersję do nowego pliku, a następnie użyj, mv
aby przenieść ją na miejsce nad starą wersją . Zastąpiony plik nadal istnieje, po prostu nie jest powiązany z katalogiem. Uruchomiony skrypt może dalej go używać, a kiedy ten skrypt zamyka uchwyt pliku, system wie, że może bezpiecznie wyczyścić plik (natychmiast lub później).
Jeśli chcesz zachować zachowanie skryptu w locie, masz trudniejszy problem. Oczekuję, że będziesz musiał wbudować go w kod skryptu. Skrypty Bash mogą obsługiwać sygnały (np. Mogą przechwycić coś podobnego kill -USR1 [pid]
), a skrypt może następnie odpowiedzieć poprzez ponowne załadowanie kodu. Może więc możesz uzyskać funkcjonalność zbliżoną do tego, czego chcesz, ale nie wiedząc, czego szukasz, nie widzę dobrego powodu, aby to zrobić, i podejrzewam, że jeśli chcesz zrobić coś tak złożonego, prawdopodobnie chcesz bardziej wyrafinowanego język programowania, aby to zrobić.
Jeśli chcesz zhakować zachowanie działającego skryptu, który nie został napisany z myślą o tym, nie masz szczęścia. Wahałbym się przed nazwaniem jakiegokolwiek zadania programistycznego niemożliwym, ale gdybyś miał zasoby i umiejętności do tego rodzaju zadania, prawdopodobnie nie zapytałbyś tutaj.