スクリプトがあります。
#! /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
。