Thank you, your answer help me a lot. This is what I did:
Following your answer, I run plink with:
plink --bfile ${set} --pca var-wts --make-rel --out ${set}.pca
Calculate sum of variance from relation covariance matrix:
sum1=$(awk '{sum+=$NR;}END{print sum}' ${set}.pca.rel)
Calculate percentage variance explained (pve) and write to file
while read line; do
echo $(($line / $sum1 * 100))
done < ${set}.pca.eigenval > ${set}.pca.pve
Although I'm still vague about the exact formula, I seem to get the appropriate result for the percentage variance explained for each PC.