Я провел учебное пособие по последнему руководству Linux Shell для 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 }' из командной строки без проблем и увидеть ожидаемый вывод, но сценарий не работает.
PATH=/bin:/user/bin
должно быть
PATH=/bin:/usr/bin
Оба awk и du находятся в /usr/bin:
$ type -p du;type -p awk
/usr/bin/du
/usr/bin/awk
PATH=/bin:/user/bin
должно быть
PATH=/bin:/usr/bin
Оба awk и du находятся в /usr/bin:
$ type -p du;type -p awk
/usr/bin/du
/usr/bin/awk