Na linha de comando do Bash, você precisaria invocar um subshell para evitar que pipefail fosse definido posteriormente:
$ (set -o pipefail && command1 | command2 | command3)
Isso limitaria o efeito da opção pipefail à subshell criada pelos parênteses (...) .
Um exemplo real:
$ (set -o pipefail && false | true) && echo pipefail inactive || echo pipefail active
pipefail active
Se você usar uma chamada explícita do shell com a opção -c , não precisará de um subshell, seja com bash ou com um sh alias para bash :
$ bash -c "set -o pipefail && false | true" && echo pipefail inactive || echo pipefail active
pipefail active
$ sh -c "set -o pipefail && false | true" && echo pipefail inactive || echo pipefail active
pipefail active
Como o seu sh não aceita a opção pipefail , eu teria que assumir que é uma versão antiga ou modificada do bash - ou que é realmente algum outro shell completamente.