From 5cb6fef6ed317e5af7e1e14e64c18c2b81657e81 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Tue, 4 Oct 2016 16:29:09 -0700 Subject: [PATCH] Add "bash" image --- bash/README-short.txt | 1 + bash/content.md | 57 ++++++++++++++++++++++++++++++++++++++++++ bash/github-repo | 1 + bash/license.md | 1 + bash/logo.png | Bin 0 -> 14141 bytes 5 files changed, 60 insertions(+) create mode 100644 bash/README-short.txt create mode 100644 bash/content.md create mode 100644 bash/github-repo create mode 100644 bash/license.md create mode 100644 bash/logo.png diff --git a/bash/README-short.txt b/bash/README-short.txt new file mode 100644 index 000000000..3f4861b7c --- /dev/null +++ b/bash/README-short.txt @@ -0,0 +1 @@ +Bash is the GNU Project's Bourne Again SHell diff --git a/bash/content.md b/bash/content.md new file mode 100644 index 000000000..47a8eb386 --- /dev/null +++ b/bash/content.md @@ -0,0 +1,57 @@ +# What is Bash? + +Bash is the [GNU](http://www.gnu.org/) Project's Bourne Again SHell, a complete implementation of the [IEEE POSIX and Open Group shell specification](http://www.opengroup.org/onlinepubs/9699919799/nfindex.html) with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features. + +> [tiswww.case.edu/php/chet/bash/bashtop.html](https://tiswww.case.edu/php/chet/bash/bashtop.html) + +%%LOGO%% + +# How to use this image + +The primary use cases this image is targeting are testing new features of more recent Bash versions before your primary distribution updates packages and testing shell scripts against different Bash versions to ensure compatibility. There are likely other interesting use cases as well, but those are the primary two the image was initially created to solve! + +## Notes + +There are a few main things that are important to note regarding this image: + +1. Bash itself is installed at `/usr/local/bin/bash`, not `/bin/bash`, so the recommended shebang is `#!/usr/bin/env bash`, not `#!/bin/bash` (or explicitly running your script via `bash /.../script.sh` instead of letting the shebang invoke Bash automatically). The image does not include `/bin/bash`, but if it is installed via the package manager included in the image, that package will install to `/bin/bash` and might cause confusion (although `/usr/local/bin` is ahead of `/bin` in `$PATH`, so as long as plain `bash` or `/usr/bin/env` are used consistently, the image-provided Bash will be preferred). + +2. Bash is the only thing included, so if your scripts rely on external tools (such as `jq`, for example), those will need to be added manually (via `apk add --no-cache jq`, for example). + +## Interactive shell + +```console +$ docker run -it --rm bash:4.4 +bash-4.4# which bash +/usr/local/bin/bash +bash-4.4# echo $BASH_VERSION +4.4.0(1)-release +``` + +## Testing scripts via bind-mount + +```console +$ docker run -it --rm -v /path/to/script.sh:/script.sh:ro bash:4.4 bash /script.sh +... +$ docker run -it --rm -v /path/to/script.sh:/script.sh:ro bash:3.2 bash /script.sh +... +``` + +## Testing scripts via `Dockerfile` + +```dockerfile +FROM bash:4.4 + +COPY script.sh / + +CMD ["bash", "/script.sh"] +``` + +Then, build and run the Docker image: + +```console +$ docker build -t my-bash-app . +... +$ docker run -it --rm --name my-running-app my-bash-app +... +``` diff --git a/bash/github-repo b/bash/github-repo new file mode 100644 index 000000000..24e4a4bbf --- /dev/null +++ b/bash/github-repo @@ -0,0 +1 @@ +https://github.com/tianon/docker-bash diff --git a/bash/license.md b/bash/license.md new file mode 100644 index 000000000..d8455bc1e --- /dev/null +++ b/bash/license.md @@ -0,0 +1 @@ +Bash is free software, distributed under the terms of the [GNU General Public License, version 3](http://www.gnu.org/licenses/gpl.html). diff --git a/bash/logo.png b/bash/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e8744fe97042fdbfc328011d8af5810c9608a3a4 GIT binary patch literal 14141 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 Hu0mjfOHt3$ literal 0 HcmV?d00001