私はmakefileを持っていて、自分のプロジェクトにシェルを設定しています。私は次のコードを使用してrootモードでconfigureシェルを実行するようにユーザーに要求するコードを書きました。rootモードからmakefileを実行するようにユーザに依頼してください
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
しかし、私は実行する「make install
」 私はルートモードから実行するようにユーザーに依頼する必要があります。 これでconfigureシェルからコードをコピーし、別のシェルスクリプトファイル 'runasroot.sh
'にコピーしました。それから私はmake install
からこのシェルスクリプトを実行します。私は上記のコードを実行すると
install:
@echo About to install XXX Project
./runasroot.sh
find . -name "*.cgi" -exec cp {} $(SCRIPTDEST)/ \;
は、私は以下のエラーを得ました。
About to install XXX Project
./runasroot.sh \;
make: *** [install] Error 1
runasroot.sh
#!/bin/bash
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
コードを使用しないように注意してください。 makefileに 'root'を強制することについて何もしないでください。 READMEファイルまたはINSTALLファイルに、ユーザーが 'make install'を' root'として実行することを文書化してください。コンパイルに 'root'権限が必要なことはまれです。インストールのために 'root'を要求していなくても、それが適切なディレクトリに書き込む権限を持っていれば、自分自身でインストールすることができます。 –
'runasroot.sh'には上記のコードだけが含まれていますか?これは再現性がないように見えます。 [mcve]の作成手順を参照してください。 – tripleee
誰もがrootのパスワードを使わずに実行することを期待しているのですか? –