Imaginez que j'ai un script foo
. Il doit être exécuté une fois lorsque l'utilisateur se connecte et n'est pas nécessaire après une exécution réussie.
Ma question: est-il sûr de supprimer le fichier de script de l'intérieur du script?
Par exemple:
#!/bin/bash
# do something
...
# if successful
rm /path/to/foo
exit 0
bash
shell-script
executable
rm
htorque
la source
la source
#!/bin/bash -e
pour vous assurer que le fichier de script est supprimé uniquement si rien ne va mal.exec rm /path/to/foo
.Réponses:
Il est sûr de supprimer le fichier shell lors de son exécution, car les gestionnaires de fichiers ne sont pas affectés par le (re) déplacement du fichier correspondant.
Pour plus d'informations, voir ici .
la source
rm <it-self>
qu'il ne réussira pas sur HP-Ux.unlink
peut échouer avecETXTBUSY
. (Curieusement, «procédure pure» et «texte partagé» ne sont pas définis dans la spécification; AFAIK ils désignent un composant d'un programme exécutable: l'exécutable lui-même ou une bibliothèque qu'il utilise). Toutes les unités principales autres que HP-UX permettent de renommer et de dissocier les exécutables.exec rm /path/to/foo
.J'étais toujours nerveux à ce sujet, alors j'ai fait:
Alternativement, vous pouvez chaîner vers un script temporaire:
la source
exec rm /path/to/shell/script