diff options
author | CoprDistGit <infra@openeuler.org> | 2024-08-02 07:01:22 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2024-08-02 07:01:22 +0000 |
commit | b82afb68645b835f0b75b5e21e93203713f4af01 (patch) | |
tree | 0d1ab6b570a647748f76fce48321b2f433918553 /sudo.sh | |
parent | 991168ed4b2aecf37be8425f5b49641ae15be61e (diff) |
automatic import of gcc-toolset-14openeuler24.03_LTSopeneuler23.09
Diffstat (limited to 'sudo.sh')
-rw-r--r-- | sudo.sh | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -0,0 +1,41 @@ +#! /bin/bash + +# Emulate /usr/bin/sudo, so that SCL environment variables +# are passed through via an /bin/env wrapper. +# Includes work by Andy Fong <boringuy@gmail.com> + +cmd_started=false +is_option_param_next=false +for arg in "$@" +do + case "$arg" in + *\'*) + arg= ;; + esac + if [ "$cmd_started" = true ]; then + cmd_options="$cmd_options '$arg'" + elif [ "$is_option_param_next" = true ]; then + sudo_options="$sudo_options $arg" + is_option_param_next=false + elif [[ $arg == -* ]]; then + sudo_options="$sudo_options $arg" + case "$arg" in + # all the options that take a parameter + "-g" | "-h" | "-p" | "-u" | "-U" | "-C" | "-s" | "-r" | "-t" | "-T") + is_option_param_next=true + ;; + "--") + cmd_started=true + ;; + esac + elif [[ $arg == *=* ]]; then + sudo_options="$sudo_options $arg" + else + cmd_options="$cmd_options '$arg'" + cmd_started=true + fi +done +if [ "$sudo_options" == "" ]; then + sudo_options="-E" +fi +exec /usr/bin/sudo $sudo_options env LD_LIBRARY_PATH=$LD_LIBRARY_PATH PATH=$PATH scl enable %{scl} "$cmd_options" |