chownがスクリプトを介して機能しない

chownがスクリプトを介して機能しない

スクリプトがあります。

#! /bin/bash
sudo chown -R $USER:$USER /opt/Folder

chownが実行されていないようです。

端末で上記の行を書くと正常に実行されます!

私が読んでこれしかし、それは役に立ちませんでした。

スクリプト名はmysetup.shで実行中です sudo sh mysetup.sh

いかなる出力も提供しません。

このように実行すると、次のような結果がsudo bash -x mysetup.sh得られます。

sudo chown -R root:root /opt/Folder

この質問は関係ありませんこれ、ユーザーが設定したためです。

ベストアンサー1

/opt/Folderコンテンツを次に変更しようとしています。あなた自身ユーザーIDではありませんか?

これはあなたの命令です:

sudo chown -R $USER:$USER /opt/Folder

$USERコマンドが実行される前に変数が評価されるため、コマンドラインで機能するため、次のように動作します(ユーザー名が仮定されますgeorge)。

sudo chown -R george:george /opt/Folder

一方、runコマンドを使用すると、sudo何よりも変数に$USERターゲットユーザーの値があります(この場合は)root。したがって、実行するとrootとしてsudo bash mysetup.sh実行されるため、mysetup.shコマンドランタイムは次のように$USER設定され評価されます。root

sudo chown -R root:root /opt/Folder

あなたの場合の解決策は、スクリプト全体を実行せずに、必要に応じてスクリプトにsudo高い権限で特定のコマンドを実行させることです。sudoつまり、代わりにbash mysetup.shを使用してくださいsudo bash mysetup.sh

おすすめ記事