diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-09-21 10:15:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-21 10:15:32 +0200 |
commit | 819b63c8de310d37a8658ee70fa3b825162a3e17 (patch) | |
tree | 7a579c4d3e8dea620ee63457cc453b3cf373baf6 | |
parent | 66f4bc76384cca8716f9192aa279138cb2b35812 (diff) | |
parent | e42e1c45ae761b203dd5312c22ee7992eef322dc (diff) | |
download | podman-819b63c8de310d37a8658ee70fa3b825162a3e17.tar.gz podman-819b63c8de310d37a8658ee70fa3b825162a3e17.tar.bz2 podman-819b63c8de310d37a8658ee70fa3b825162a3e17.zip |
Merge pull request #4068 from giuseppe/always-set-home
container: make sure $HOME is always set
-rw-r--r-- | libpod/container_internal_linux.go | 11 | ||||
-rw-r--r-- | test/e2e/run_test.go | 16 |
2 files changed, 25 insertions, 2 deletions
diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go index 4bbbef5db..355b9bea4 100644 --- a/libpod/container_internal_linux.go +++ b/libpod/container_internal_linux.go @@ -279,6 +279,17 @@ func (c *Container) generateSpec(ctx context.Context) (*spec.Spec, error) { } } + hasHomeSet := false + for _, s := range c.config.Spec.Process.Env { + if strings.HasPrefix(s, "HOME=") { + hasHomeSet = true + break + } + } + if !hasHomeSet { + c.config.Spec.Process.Env = append(c.config.Spec.Process.Env, fmt.Sprintf("HOME=%s", execUser.Home)) + } + if c.config.User != "" { // User and Group must go together g.SetProcessUID(uint32(execUser.Uid)) diff --git a/test/e2e/run_test.go b/test/e2e/run_test.go index 4d2cee8e3..55920467c 100644 --- a/test/e2e/run_test.go +++ b/test/e2e/run_test.go @@ -194,10 +194,22 @@ var _ = Describe("Podman run", func() { }) It("podman run environment test", func() { - session := podmanTest.Podman([]string{"run", "--rm", "--env", "FOO=BAR,BAZ", ALPINE, "printenv", "FOO"}) + session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv", "HOME"}) session.WaitWithDefaultTimeout() Expect(session.ExitCode()).To(Equal(0)) - match, _ := session.GrepString("BAR,BAZ") + match, _ := session.GrepString("/root") + Expect(match).Should(BeTrue()) + + session = podmanTest.Podman([]string{"run", "--rm", "--env", "HOME=/foo", ALPINE, "printenv", "HOME"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + match, _ = session.GrepString("/foo") + Expect(match).Should(BeTrue()) + + session = podmanTest.Podman([]string{"run", "--rm", "--env", "FOO=BAR,BAZ", ALPINE, "printenv", "FOO"}) + session.WaitWithDefaultTimeout() + Expect(session.ExitCode()).To(Equal(0)) + match, _ = session.GrepString("BAR,BAZ") Expect(match).Should(BeTrue()) session = podmanTest.Podman([]string{"run", "--rm", "--env", "PATH=/bin", ALPINE, "printenv", "PATH"}) |