Files
tai/research/shell-multiplexer-auto-attach/bash-manual-interactive-shell-definition.md
T

48 lines
2.4 KiB
Markdown
Raw Normal View History

# Is This Shell Interactive? (Bash manual, via w3.pppl.gov mirror)
## Metadata
| Field | Value |
|---|---|
| Institute | Molodetz Institute — Research & Retrieval Division |
| Subject | shell-multiplexer-auto-attach |
| Document type | Source Dossier |
| Tier | 1 |
| Source title | 5.3: Is This Shell Interactive? |
| Source URL | https://w3.pppl.gov/info/bash/Is_This_Shell_Interactive$3f.html |
| Source publisher / author | GNU Bash manual (mirrored by w3.pppl.gov) |
| Source type | vendor docs |
| Source date (published) | Unknown — not stated |
| Date researched | 2026-10-09 |
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
| Research method | web search synthesis |
| Confidence | High |
| Status | Active |
## Summary
Bash's own official definition: an interactive shell is one whose input and output are both connected to a terminal (as determined by `isatty(3)`), **or** one explicitly started with the `-i` option. This is the ground truth every other heuristic in this subject is approximating.
## Key findings
- The `-i` clause matters: a shell can be interactive even with redirected stdin/stdout if explicitly started with `-i` — a pure `isatty()` check on both streams would miss this case.
- Conversely, a shell can have both stdin and stdout on a real terminal and still not be "interactive" in bash's sense if started non-interactively with neither `-i` nor a terminal-backed invocation that sets it.
## Pros / strengths
- This is the authoritative definition, not a third party's interpretation — any detection heuristic built for the proposal should be checked against this definition, not against folklore.
## Cons / limitations / caveats
- Being the formal definition, it does not itself address the proposal's actual hard problem: distinguishing a human sitting at a real interactive shell from an automation tool that also happens to satisfy this exact definition (a pty-backed agent terminal passes `isatty()` on both streams too).
## Relevance to tai
The floor every detection heuristic in the proposal must be built on: `$-` containing `i` (bash's own exposed signal for this definition) is the right primitive to start from — but, per the other dossiers in this subject, satisfying bash's own "interactive" definition is necessary, not sufficient, to conclude a *human* is present.
## Changelog
| Date | Change |
|---|---|
| 2026-10-09 | Initial dossier created. |