find_sleepd_file() in /usr/lib/pm-utils/functions has the following: find_sleepd_files() { flist="/etc/pm/sleep.d/*[^~] /usr/lib/pm-utils/sleep.d/*[^~]" bases=$(for file in $flist ; do echo $(basename $file) ; done | sort -n) If /etc/pm/sleep.d is empty, then $flist is, literally, "/etc/pm/sleep.d/*[^~]". We go through the 'for file in $flist' loop precisely once, with $file set to the same. $(basename $file) evaluates to '*[^~]' and the 'echo' command prints the filename of every file in the current directory. Let's just hope that the first filename printed by echo isn't the name of a program which will do nasty things... :)
Do you have a suggestion, how to fix this? Would this be ok? flist="$(/bin/ls /etc/pm/sleep.d/*[^~] /usr/lib/pm-utils/sleep.d/*[^~] 2>/dev/null)"
shopt -s nullglob seems to be the best option here.
*** This bug has been marked as a duplicate of 302401 ***