Você não pode desmarcá-lo, mas pode alterar $2 para $1 :
$ set bon jour
$ echo "$1$2"
bonjour
$ shift
$ echo "$1$2" # $2 is now empty
jour
shift mudará todos os parâmetros posicionais um passo abaixo. É comum, por exemplo, loops de análise de linha de comando (que não usam getopt / getopts ) para alterar os parâmetros posicionais em cada iteração enquanto examina repetidamente o valor de $1 .
É incomum querer remover um parâmetro posicional.
A propósito, unset usa uma variável nome , não seu valor, então unset $1 irá, na verdade, desfazer a variável bon (se ela já tivesse sido definida).