Pourquoi reçois-je un message d'erreur lorsque j'essaie de piéger un signal SIGINT?

Je cours le script ci-dessous pour download automatiquement les files d'un server utilisant lftp. Cela fonctionne sauf que quand il fonctionne, j'obtiens le message d'erreur

trap: SIGINT: bad trap 

Si je remplace SIGINT et SIGTERM par INT et TERM, cela fonctionne, mais je ne sais pas si cela atteint le même but. C'est sur Linux Debian 4.9.2-10.

 #!/bin/sh login="login" pass="password" host="server.server.com" remote_dir='~/remote/dir' local_dir="/local/dir" base_name="$(basename "$0")" lock_file="/tmp/$base_name.lock" trap "rm -f $lock_file" SIGINT SIGTERM if [ -e "$lock_file" ] then echo "$base_name is running already." exit else touch "$lock_file" /usr/bin/lftp -p 22 -u "$login","$pass" sftp://"$host" << EOF set sftp:auto-confirm yes set mirror:use-pget-n 5 mirror -c -P5 "$remote_dir" "$local_dir" quit EOF rm -f "$lock_file" trap - SIGINT SIGTERM exit fi 

Déposez le préfixe SIG , entrez simplement le nom du signal:

 trap "rm -f -- "$lock_file"" INT TERM 

Tous les shells ne include pas / ne prennent pas l'input avec le préfixe SIG , sh (probablement que vous utilisez dash ) est l'un de ceux-ci.

D'autre part, des shells plus riches en fonctionnalités comme ksh , bash , zsh autorisent le préfixe SIG devant le nom du signal.