# Install dsh with Homebrew, apt, MacPorts

Dancer's shell, or distributed shell. Version 0.25.10 via Homebrew; verified from local package data. Also installable with debian: sudo apt install dsh.

## Install

```sh
sudo av install brew:dsh
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install dsh
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install dsh
```

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

### Linux

- Debian apt (92%):

```sh
sudo apt install dsh
```

  Evidence: Debian stable package indexes: dsh from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

## Package facts

- **Package key:** brew:dsh
- **Package manager:** Homebrew
- **Version:** 0.25.10
- **Source summary:** Dancer's shell, or distributed shell
- **Homepage:** <https://www.netfort.gr.jp/~dancer/software/dsh.html.en>
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- dsh (alias)

## Install behavior

- Bottle: not available

## Freshness

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

dsh, Dancer's shell, is Junichi Uekawa's C implementation of a distributed shell wrapper for running rsh, remsh, or ssh commands over many Unix hosts.

### Project history

The official page says dsh grew from the author's own Debian cluster administration needs: repeatedly writing ad hoc scripts for many hosts was inefficient, so a personal tool was polished into a public program. The page's HTML creation stamp is 2001-08-31, and its public download index carries a long 0.22 through 0.25 release stream.

By the 0.24.2 note dated 2003-08-26, the project had already dealt with portability and security-advisory review around its asprintf implementation. Later releases moved into the 0.25 series, with Homebrew packaging 0.25.10 from the upstream download area.

### Adoption history

dsh's adoption is old-school Unix administration adoption: package-manager availability, config files in /etc and ~/.dsh, and use on clusters where the same command must run across many hosts. The official page says it was installed on many clusters and was also used by the related dmachinemon system.

Homebrew analytics showed only 71 installs over the preceding 365 days during this batch, which fits a mature, niche sysadmin utility rather than an actively trendy tool.

### How it is used

The canonical usage is to put host lists or groups in text config files and run commands such as `dsh -a -c -- uname -a` or `dsh -g group -c -- command`. The tool also supports limiting the number of simultaneous connections, hierarchical invocation, and NIS netgroups.

### Why package nerds care

dsh is package-nerd significant because it captures a pre-cloud cluster-management pattern: small C utilities, text host lists, rsh/ssh wrappers, and distro packaging did the work that later orchestration systems absorbed. It is also an example of a name collision family: several unrelated tools called dsh existed in Perl, C, Python, and AIX-compatible forms.

### Timeline

- 2001-08-31: The official HTML page records its creation date.
- 2002: The official references section links Japanese research reports evaluating dsh.
- 2003-08-10: A Bugtraq security advisory about dsh was posted; the maintainer later explained why the checked implementation was not affected on common platforms.
- 2003-08-26: The official page documents the 0.24.2 security-review note.
- 0.25.10: The upstream download index and Homebrew formula identify 0.25.10 as the packaged stable release.

### Related projects

- dmachinemon is named by the official page as a system that used dsh extensively.
- The official related-work list points to other distributed-shell projects, including Perl dsh, another C dsh, and pydsh.
- ssh, rsh, and remsh are the remote-shell mechanisms dsh wraps.

### Sources

- <https://www.netfort.gr.jp/~dancer/software/dsh.html.en>
- <https://www.netfort.gr.jp/~dancer/software/downloads/>
- <https://formulae.brew.sh/formula/dsh>


## Security Notes

generalized runtime or code generation signal.

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


## Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.


## Configuration files

- Unix: /etc/dsh/dsh.conf, ~/.dsh/dsh.conf, /etc/dsh/machines.list, ~/.dsh/machines.list, /etc/dsh/group/groupname, ~/.dsh/group/groupname
## Other Package-Manager Records

- Debian apt - dsh - 0.25.10-2: normalized package name match | Debian stable package indexes: dsh from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | dancer's shell, or distributed shell | https://www.netfort.gr.jp/~dancer/software/dsh.html
- Ubuntu apt - dsh - 0.25.10-1.6build1: normalized package name match | Ubuntu 24.04 LTS package indexes: dsh from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz | dancer's shell, or distributed shell | http://www.netfort.gr.jp/~dancer/software/dsh.html
- MacPorts - dsh: normalized package name match | MacPorts ports tree: net/dsh/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1


## Combined YAML source

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


## Sources

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