-
-
Notifications
You must be signed in to change notification settings - Fork 1
wip shell
Opens an interactive shell in the primary container.
wip shell
-
If
interaction.shellis defined inwip.yml, it wins —wip shellruns your entry verbatim, exactly aswip dispatch shellwould. - Otherwise, try
bashviawslc exec -it. - If that exits non-zero, try
sh.
The bash → sh fallback covers Alpine-based images, which typically ship only sh.
interaction:
shell:
command: zsh
interactive: trueOr with a different working directory / user:
interaction:
shell:
command: bash -l
workdir: /app
user: "1000:1000"
interactive: trueSince your entry replaces the built-in behavior entirely, the bash → sh fallback no longer
applies — you're naming the shell yourself.
wip shell is an exec, so the container must be up:
wip up -d
wip shellFor a shell in a fresh container instead:
wip run bashThe shell runs behind a pseudo-terminal, which is what makes job control, Ctrl-C, editors, and
pagers work correctly. wip also keeps the pty sized to your real terminal and re-syncs on resize,
so full-screen programs (less, vim, htop) render properly when you resize the window.
wip's own terminal is switched to raw mode for the duration, so only the pty's line discipline echoes your input — otherwise every keystroke would appear twice.
On native Windows, where Ruby has no openpty, wip falls back to letting the child inherit its
real stdio instead. Everything still works; wip just can't observe the output, so error hints
aren't generated on that path.
If stdin or stdout isn't a real TTY (piped, redirected, CI), no TTY is allocated at all. See TTY Allocation.
Bridged, with the same fallback:
<compose command> -f FILE [-p PROJECT] exec <compose.service> bash
<compose command> -f FILE [-p PROJECT] exec <compose.service> sh
Introduction
Modes
Configuration
- Configuration Reference
- Config File Discovery
- Dependencies
- Networking
- Interactions
- Restart Policies
- Env Files
- Secret Masking
- Dockerignore
- Shadow Build Context
- Source Sync
- Sync Modes
compose.yml support
- Compose File Support
- Compose Build
- Compose Depends On
- Compose Profiles
- Compose Variable Interpolation
Commands
- CLI Command Reference
- wip init
- wip version
- wip doctor
- wip config
- wip build
- wip up
- wip stop
- wip down
- wip exec
- wip run
- wip shell
- wip logs
- wip sync
- wip dispatch
- Global Options
- Debug Output
- TTY Allocation
Guides
- Guides
- Migrating from dip
- Reusing an Existing compose.yml
- Fixing a Slow Boot
- Continuous Sync
- Auto Restarting Containers
- Multi Arch Images
- Using wip in CI
Troubleshooting
- Troubleshooting & FAQ
- FAQ
- Configuration Errors
- WSLC Not Found
- Registry Authentication
- Architecture Mismatch
- Volume Limit Reached
- rsync Not Found
- Reporting Issues
Comparison
Project