# Install wait_on with Homebrew, MacPorts

Provides shell scripts with access to kqueue(3). Version 1.1 via Homebrew; verified from local package data. Also installable with macports: sudo port install wait_on.

## Install

```sh
sudo av install brew:wait_on
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install wait_on
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install wait_on
```

  Evidence: MacPorts ports tree: sysutils/wait_on/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:wait_on
- **Package manager:** Homebrew
- **Version:** 1.1
- **Source summary:** Provides shell scripts with access to kqueue(3)
- **Homepage:** <https://www.freshports.org/sysutils/wait_on/>
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- wait_on (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 1.1
## Project history and usage

`wait_on` is a small FreeBSD-oriented command that exposes file and directory change notifications to shell scripts. It lets scripts sleep until a watched path changes instead of polling in a loop.

### Project history

The FreeBSD manual page gives the clearest project history: `wait_on` was written by Andrew Stevenson in January 2002 under FreeBSD 4.4. Its design is tied directly to kqueue, the BSD kernel event-notification facility that had recently made file, directory, and descriptor events available without busy polling.

### How it is used

The command waits on one or more files or directories and exits when a requested event occurs. The manual gives examples such as watching a mailbox for writes, waiting for files to arrive in an incoming FTP directory, or using `-i` and `-t` so a script can tell which watched path changed or timed out.

Internally, `wait_on` uses kqueue's vnode notifications, including events for writes, extension, deletion, renames, link-count changes, attribute changes, and revocation. That makes it a compact bridge between shell scripting and kernel event delivery on systems with kqueue.

### Why package nerds care

This is a classic small Unix package: one command, one system primitive, and a clean scripting use case. It is historically interesting because it predates the later wave of cross-platform file-watcher tools and shows early BSD users solving shell automation without periodic `stat` polling.

### Timeline

- January 2002: `wait_on` was written under FreeBSD 4.4 by Andrew Stevenson.
- 2000s onward: the command remained useful as a shell-level wrapper around kqueue file and directory events.

### Related projects

- The closest related primitive is kqueue itself. In the broader file-watching family, `wait_on` overlaps conceptually with inotify-based Linux tools and higher-level cross-platform watchers, but it stays intentionally close to the FreeBSD kernel interface.

### Sources

- <https://man.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2>
- <https://man.freebsd.org/cgi/man.cgi?query=wait_on>
- <https://www.freshports.org/sysutils/wait_on/>


## Security Notes

generalized runtime or code generation signal.

- **Geiger risk:** yellow / medium
- generalized runtime or code generation signal

## Other Package-Manager Records

- MacPorts - wait_on: normalized package name match | MacPorts ports tree: sysutils/wait_on/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Related links

- [wait-on](https://pkg.so/pkg/npm/wait-on/) - Same normalized package name exists in another local package ecosystem.

## Combined YAML source

View the package source record on GitHub. [combined/wait_on.yml](https://github.com/mxcl/pkgdb/blob/main/combined/wait_on.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated package history
- pkgdb category and tag curation
- external package-manager database matches
- cross-ecosystem install command graph
