Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linux/Ubuntu set: Illegal option -o pipefail

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
like image 726
baermathias Avatar asked Jan 05 '19 19:01

baermathias


2 Answers

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
like image 178
l0b0 Avatar answered Oct 19 '22 11:10

l0b0


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
like image 28
Mike Avatar answered Oct 19 '22 13:10

Mike