Bash コードは端末で実行すると正しく実行されますが、udev を使用して実行すると実行されません。

Bash コードは端末で実行すると正しく実行されますが、udev を使用して実行すると実行されません。

ペンドライブのさまざまなファイルをPC上の適切なフォルダに移動しようとしています。つまり、音楽ファイルは音楽フォルダに移動し、テキストファイルは文書に移動する式です。これに対してスクリプトを作成しました。 。対応するフォルダ)、エコーはtestlog.txtファイルに保存されます。したがって、スクリプトは実行中ですが、ファイルは移動されません。なぜですか?スクリプトはルートが所有します。

私のUdevルールはACTION=="add"、RUN+="/lib/udev/cpphone.sh"です。

私のスクリプトは

    #!/bin/bash
    echo Hello > /home/ArunReddy/testlog.txt
    exec 1>/dev/null 2>&1  
    DIR=$(date +%d-%m-%y) 

    if [ ! -d /home/ArunReddy/Pictures/"$DIR" ];
    then
        cd /home/ArunReddy/Pictures/
    mkdir $DIR
    fi

    if [ ! -d /home/ArunReddy/Pictures/"$DIR" ];
    then
    cd /home/ArunReddy/Documents/
        mkdir $DIR
    fi

    if [ ! -d /home/ArunReddy/Videos/"$DIR" ];
    then
    cd /home/ArunReddy/Videos/
    mkdir $DIR
    fi

    if [ ! -d /home/ArunReddy/Music/"$DIR" ];
    then
    cd /home/ArunReddy/Music/
    mkdir $DIR
    fi

    cd /run/media/ArunReddy/121C-E137
    mv *.png /home/ArunReddy/Pictures/$DIR/
    echo pngfilecmd executed>/home/ArunReddy/testlog.txt
    mv *.jpg /home/ArunReddy/Pictures/$DIR/
    mv *.bmp /home/ArunReddy/Pictures/$DIR/
    mv *.txt /home/ArunReddy/Documents/$DIR/
    mv *.odt /home/ArunReddy/Documents/$DIR/
    mv *.doc /home/ArunReddy/Documents/$DIR/
    mv *.pptx /home/ArunReddy/Documents/$DIR/
    mv *.pdf /home/ArunReddy/Documents/$DIR/
    mv *.ppt /home/ArunReddy/Documents/$DIR/
    mv *.docx /home/ArunReddy/Documents/$DIR/
    mv *.avi /home/ArunReddy/Videos/$DIR/
    mv *.flv /home/ArunReddy/Videos/$DIR/
    mv *.MP4 /home/ArunReddy/Videos/$DIR/
    mv *.mpeg /home/ArunReddy/Videos/$DIR/
    mv *.MP3 /home/ArunReddy/Music/$DIR/
    exit

答え1

おそらく、これらのスクリプトが実行されるudev環境にPATHが定義されていない可能性があります。などのコマンドのcdフルパスmkdirを試してくださいcpwhich cdシェルでコマンドを使用してパスを検索できます。

関連情報