Das sollte funktionieren:
nohup ./myprogram.sh > /dev/null 2>&1 &
echo $! > run.pid
Nach der Umleitung haben Sie bereits ein kaufmännisches Und, das Ihr Skript in den Hintergrund stellt. Daher müssen Sie den gewünschten Befehl nur nach dem kaufmännischen Und eingeben, ohne etwas anderes voranzustellen:
nohup ./myprogram.sh > /dev/null 2>&1 & echo $! > run.pid