Wyobraź sobie, że mam skrypt foo
. Powinien zostać uruchomiony raz, gdy użytkownik się zaloguje, i nie jest potrzebny po pomyślnym uruchomieniu.
Moje pytanie: czy bezpiecznie jest usunąć plik skryptu z poziomu skryptu?
Na przykład:
#!/bin/bash
# do something
...
# if successful
rm /path/to/foo
exit 0
bash
shell-script
executable
rm
htorque
źródło
źródło
#!/bin/bash -e
aby upewnić się, że plik skryptu zostanie usunięty tylko wtedy, gdy nic nie pójdzie źle.exec rm /path/to/foo
.Odpowiedzi:
Bezpiecznie jest usunąć plik powłoki podczas jego uruchamiania, ponieważ programy obsługi plików nie mają wpływu (ponownego) przeniesienia odpowiedniego pliku.
Aby uzyskać więcej informacji, zobacz tutaj .
źródło
rm <it-self>
Nie powiedzie się na HP-Ux.unlink
może się nie powieśćETXTBUSY
. (Co dziwne, „czysta procedura” i „wspólny tekst” nie są zdefiniowane w specyfikacji; AFAIK oznaczają składnik programu wykonywalnego: sam plik wykonywalny lub używaną przez niego bibliotekę). Wszystkie główne unikaty inne niż HP-UX pozwalają na zmianę nazw plików wykonywalnych i odłączanie ich.exec rm /path/to/foo
.Zawsze się tym denerwowałem, więc:
Alternatywnie możesz utworzyć łańcuch do tymczasowego skryptu:
źródło
exec rm /path/to/shell/script