sudoを使わずにbashスクリプトを書くには?

sudoを使わずにbashスクリプトを書くには?

gem installor apt-get installinをbash使用せずにどのように書くことができますかsudo

#!/usr/bin/env bash

apt-get update -y
apt-get upgrade -y
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --ruby
source /usr/local/rvm/scripts/rvm
((EUID)) || exit
gem install jekyll

ベストアンサー1

#!/usr/bin/env bash
((!EUID)) && { # check if the EUID is a zero 
  echo "${0##*/} can not be executed as root " # notify
  exit 1 # exist with status code 1
}
gem install jekyll

あなたは管理者(一般ユーザー)なので、$ EUID変数は常に0より大きいです!
ルート $EUID = 0

((expression))式は、以下の算術評価で説明されている規則に従って評価されます。式がゼロでないと評価された場合、戻り状態は0で、そうでない場合は戻り状態は1です。これは let "expression" とまったく同じです。

または

#!/usr/bin/env bash
[[ $EUID = 0 ]] && { # check if the EUID is eq to zero
  echo "${0##*/} can not be executed as root " # notify
  exit 1 # exist with status code 1
}
gem install jekyll

私はこれが好きです

((EUID)) || exit 1

または

((!EUID)) && exit 1

ここに画像の説明を入力してください。

質問を修正して更新

#!/usr/bin/env bash
((!EUID)) && {
 #stuff to be exec as root
for option in update 'upgrade -y'
  do
    apt-get $option
  done
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --ruby
source /usr/local/rvm/scripts/rvm

} || {
 #stuff to be exec as non-root
gem install jekyll

}
exit 0

これで、root ユーザーと root 以外のユーザーの両方で動作しますが、EUID に基づいてスクリプトの一部のみが実行されます。

おすすめ記事