dmenu/dmenu_path

27 lines
503 B
Bash
Executable File

#!/bin/sh -f
CACHE=$HOME/.dmenu_cache
IFS=:
qfind() {
find "$@" 2>/dev/null
}
uptodate() {
test -f $CACHE &&
test "$(echo "$PATH")" = "$(sed 1q "$CACHE")" &&
qfind $PATH -maxdepth 0 -newer $CACHE >/dev/null
}
if ! uptodate
then
{
echo "$PATH"
qfind $PATH -type f -maxdepth 1 '(' -perm -u+x -o -perm -g+x -o -perm -o+x ')' |
sed 's,.*/,,' | sort | uniq
} > $CACHE.$pid
mv $CACHE.$pid $CACHE
fi
tail -n +2 $CACHE