Você pode usar a opção -f , --force de ln para remover o link simbólico existente antes de criar o novo. Se o destino for um diretório, você precisará adicionar a opção -n , --no-dereference para informar ln para tratar o symlink como um arquivo normal.
ln -sfn target existing_link
No entanto, esta operação não é atômica, já que ln irá unlink() do antigo link simbólico antes de chamar symlink() , então, tecnicamente, não conta como alterar o valor do link. Se você se importa com essa distinção, a resposta é não, você não pode alterar o valor de um link simbólico existente.
Dito isso, você pode fazer algo parecido com o seguinte para criar um novo symlink, alterando parte do valor do link antigo:
ln -sfn "$(readlink existing_link | sed s/foo/bar/)" "existing_symlink"