Linux/Ubuntu set: Illegal option -o pipefail

14,370

Solution 1

You are running bin/sh, on Ubuntu it is a symbolic link pointing to /bin/dash, but pipefail is a bashism.

Make the script executable:

chmod +x myscript.sh

and then run the script as follows:

sudo ./myscript.sh

Solution 2

I had the same error when running script from zsh and the script began with incorrect shebang.

WRONG, missing ! after #:

#/bin/bash
rest-of-the-script

Correct:

#!/bin/bash
rest-of-the-script
Share:
14,370
sunwarr10r
Author by

sunwarr10r

Updated on September 23, 2022

Comments

  • sunwarr10r
    sunwarr10r over 1 year

    The below mentioned line of code used to work for me all the time on a Ubuntu 16.04 distribution, but suddenly option-name pipefail is an illegal option:

    set -eu -o pipefail
    

    returns:

    set: Illegal option -o pipefail

    Why does this happen? I run the command on a completely new installed system and as part of a shell script. The code is placed right at the beginning:

    myscript.sh:

    1 #!/bin/bash
    2 set -eu -o pipefail
    3 ...
    

    The script is run as sudo:

    sudo sh ./myscript.sh