Skip to content

Instantly share code, notes, and snippets.

@skull-squadron
Created August 31, 2025 05:14
Show Gist options
  • Save skull-squadron/8436222ce6c886f5c8c17046a3a3b226 to your computer and use it in GitHub Desktop.
Save skull-squadron/8436222ce6c886f5c8c17046a3a3b226 to your computer and use it in GitHub Desktop.
FreeBSD bash command not found handler
# /etc/profile.d/command-not-found.sh
[ "$BASH" ] || return 0
command_not_found_handle() {
if [[ "$1" = */* ]]; then
local cmd="${1#/}$"
else
local cmd="usr/local/s?bin/$1$"
fi
[[ -e /var/db/pkg/provides/provides.db && -e /usr/local/sbin/pkg ]] || {
[[ -x /usr/local/sbin/pkg ]] || {
echo >&2 'Installing pkg...'
ASSUME_ALWAYS_YES=TRUE pkg &>/dev/null
}
pkg info pkg-provides &>/dev/null || {
echo >&2 'Installing pkg-provides...'
pkg install -y pkg-provides &>/dev/null
local line='PKG_PLUGINS_DIR = "/usr/local/lib/pkg/";'
grep -qxF "$line" /usr/local/etc/pkg.conf || cat >>/usr/local/etc/pkg.conf <<PKG_CONF
$line
PKG_ENABLE_PLUGINS = true;
PLUGINS [ provides ];
PKG_CONF
}
echo >&2 'Updating pkg-provides db...'
pkg provides -u &>/dev/null
}
echo >&2
echo >&2 "Of FreeBSD port(s) providing \`$1\`, run ONE of the following to install it:"
echo >&2
pkg provides "$cmd" | \
sed -E -e '/^Name[^:]*: /!d' \
-e 's/^Name[^:]*: //' \
-e 's/-[0-9][0-9a-zA-Z%#!^,@._-]+[0-9a-zA-Z]$//' \
-e 's/^/ pkg install /' >&2
echo >&2
return 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment