Команды `du` и` awk` не найдены при запуске скрипта

Я просматривал руководство по последней версии Linux Shell Handbook для Linux Pro mag, и у меня возникли проблемы с работой этого блока кода. Когда я запускаю скрипт, он говорит мне, что команды du и awk не найдены.

#!/bin/bash

PATH=/bin:/user/bin
. /usr/local/sbin/functions.bash

printf "USER\tGB USED\n"
for WHO in $(</user/local/sbin/chusers); do
    HOMESUM=`eval du -s -$WHO |awk '{print $1}'`
    TMPLIST=$( ls -lR --block-size 1024 $(</user/local/bin/chdirs) | egrep "^.......... +[0-9]+ $WHO" | awk '{print $5}' )
    TSUM=0
    for N in $TMPLIST; do
        TSUM=$(( $TSUM+$N ))
    done
    TOT=$(( $HOMESUM+$TSUM ))
    to_gb $WHO $TOT
done

Вот функция to_gb из function.bash

to_gb()
    {
        local MB D1 D2 USER
        USER=$1
        MB=$(( $2/1024))
        D1=$(( $MB/1000))
        D2=$(( $MB-($D1*1000) ))
        printf "%s\t%s\n" $USER $D1.${D2:0:1}
        return
    }

Я смог выполнить каждую команду du -s ~username и awk '{ print $1 }' из командной строки без проблем и видел ожидаемый результат, но скрипт не работает.

0
задан 6 August 2017 в 22:30

1 ответ

PATH=/bin:/user/bin

должен быть

PATH=/bin:/usr/bin

И awk и du, находятся в /usr/bin:

$ type -p du;type -p awk
/usr/bin/du
/usr/bin/awk
1
ответ дан 7 August 2017 в 08:30

Другие вопросы по тегам:

Похожие вопросы: