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