#!/bin/sh cache_dir="${XDG_CACHE_HOME:-"$HOME/.cache"}" cache="$cache_dir/wmenu_run" uptodate() { IFS=: for path in $PATH; do if test "$path" -nt "$cache"; then return 1 fi done return 0 } get_bin() { IFS=: for path in $PATH; do for bin in "$path"/*; do if [ -x "$bin" ]; then echo "${bin##*/}" fi done done } [ ! -e "$cache_dir" ] && mkdir -p "$cache_dir" if [ ! -e "$cache" ] || ! uptodate; then get_bin | sort -u | tee "$cache" else cat "$cache" fi