ln
, como cp
e mv
, se comporta de maneira diferente, dependendo se o destino é um diretório existente (incluindo um link simbólico para um). Se não for, então a fonte é copiada / movida / vinculada ao nome de desintegração. Se o destino for um diretório existente, a origem será copiada / movida / vinculada a um arquivo com o mesmo nome base da origem, no diretório de destino.
Com GNU ln (como encontrado no Linux), use a opção -n
para sobrescrever o destino em vez de escrever sob ele quando o destino for um link simbólico para um diretório.
ln -snf "$GAME_PATH/Lone Wolf/books" "$SEVENTH_SENSE_PATH/Seventh Sense"
Como alternativa, você pode testar se o destino é um diretório e não recriá-lo, se existir.
[ -d "$SEVENTH_SENSE_PATH/Seventh Sense"/. ] ||
ln -s "$GAME_PATH/Lone Wolf/books" "$SEVENTH_SENSE_PATH/Seventh Sense"
Como alternativa, você pode remover o alvo primeiro e criá-lo incondicionalmente.
rm -f "$SEVENTH_SENSE_PATH/Seventh Sense"
ln -s "$GAME_PATH/Lone Wolf/books" "$SEVENTH_SENSE_PATH/Seventh Sense"