# server.Server.run_shell

- **Module:** server.Server
- **Package:** libtmux
- **Language:** Rust
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-rs/blob/f0e37052c232636b61d095817046e6bfc8f2ca40/crates/libtmux/src/server.rs#L1501
- **Page:** https://libtmux.org/en/rs/latest/reference/server-server-run_shell/

```
server.Server.run_shell(self, command: impl Into<OsString>) -> Result<Vec<TmuxText>, Error>
```

Run a shell command through tmux and collect its output.

The command runs in tmux's own environment, not the caller's. Output
lines are [`TmuxText`] because a shell can emit any bytes.

# Errors

Returns an error when tmux refuses the command.

Also refuses outright on tmux 3.3, 3.3a, and 3.4, with
[`Error::CapabilityDefective`]. Those releases send `run-shell` output
into a pane's copy-mode buffer instead of to the client, and still exit
zero, so the command appears to have produced nothing. Reporting an
empty listing there would be a wrong answer the caller could not
detect. 3.2a and 3.5 onwards are unaffected.

# Cancel safety

The effect may have happened, and may still be happening. The shell
command runs under the tmux server, not this dispatch, so a dropped
call stops waiting for it without stopping it, and its output is lost.
