简体   繁体   中英

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

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM