'du' e 'awk' não encontrados ao executar um script

0

Eu estava passando por um tutorial sobre o mais recente Linux Shell Handbook para Linux Pro mag e estou tendo problemas para fazer esse bloco de código funcionar. Quando executo o script, ele informa que os comandos du e awk não foram encontrados.

#!/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

Aqui está a função to_gb de 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
    }

Eu consegui executar cada comando du -s ~username e awk '{ print $1 }' da linha de comando sem problemas e vi a saída esperada, mas o script não funciona.

    
por Jeff Beougher 06.08.2017 / 20:44

1 resposta

1

PATH=/bin:/user/bin

deve ser

PATH=/bin:/usr/bin

Tanto awk como du estão em /usr/bin :

$ type -p du;type -p awk
/usr/bin/du
/usr/bin/awk
    
por Florian Diesch 06.08.2017 / 20:49