pushd é um comando bash , que geralmente não é implementado por /bin/sh . Para usar pushd em um script sh , você teria que fornecer um script ou função com a mesma funcionalidade.
A maneira idiomática de alterar temporariamente o diretório de trabalho de alguém para o curso de alguns comandos em um script sh é fazer
( cd directory && somecommand )
Isso mudaria para directory e executaria somecommand se isso fosse bem-sucedido. A coisa toda é feita em um subshell, então o cd não terá nenhum efeito no restante do script.
Alternativamente,
( cd directory || exit 1
command1
command2
command3 )