2016-04-18 19 views
1

これはどこかに書かれていると確信しています。私は誤った検索をしていますが、見つけられませんでした。Linux:sudoでbinでスクリプトを実行する

シェルスクリプトを作成します。これらのスクリプトの多くは、スーパーユーザー権限が必要です。スクリプトの中にsudoコマンドを置くのではなく、最初からsudoを使ってスクリプト全体を呼び出す必要があります。

ので、代わりの:

#!/bin/bash 
# Sample Script 1 

sudo mkdir /usr/tempDir 

それは次のようになります。

#!/bin/bash 
# Sample Script 2 

mkdir /usr/tempDir 

そして、私はちょうどこのようにそれを呼び出します:sudoの./sampleScript.sh

私の問題は、ときということです私はスクリプトを書く、私はそれを私のビンにシムリンクするので、私はそれを実行するときにスクリプトのパスを心配する必要はありません。

私のbinにsimlinkedしたファイルを持っていて、それを単に:sampleScript.shとして実行すると、認識されて失敗します。しかし、もし私が:sudo sampleScript.shを実行すると、 "sudo:sampleScript.sh:command not found"というメッセージが表示されます。

これは/ home/myName/binと/ usr/local/binの両方にある場合に発生します。

私は、この仕事をするために私が行方不明になっていることを知っている必要があります。そして、私はおそらくちょうど私のGoogle検索を適切に言い表していないことを知っている。この部分を理解するためのガイダンスを探しています。

ありがとうございました。

+0

'。/'なしで 'sudo sampleScript.sh'を試しましたか?それがうまくいかない場合は、おそらく 'sudo env" PATH = $ PATH "sampleScript.sh'を試してみてください。おそらくsudo自身のシェルは$ PATHにそのスクリプトのディレクトリを持っていないかもしれません。 –

+0

http://unix.stackexchange.com/questions/83191/how-to-make-sudo-preserve-path – malbarbo

+0

私の答えが助けてくれたら、それを受け入れることができます。 – Harry

答えて

3

あなたがsudoを呼び出すと、PATHが変更されます。つまり、あなたのものを使用していません。ここを見て

sudo changes PATH - why?

それ行い、このことは今ではないユーザーとして、rootとして実行しているので。

関連する問題