Environment Variable Discrepancies
When debugging with SSH the `$PATH` environment will often be different than what may be set in a Dockerfile. For example:
# Update PATH for Java tools
ENV PATH="/opt/sbt/bin:/opt/apache-maven/bin:/opt/apache-ant/bin:/opt/gradle/bin:$PATH"
When SSH'ing into the build, customers may find that `$PATH` is no longer set to that value:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Cause
This can be due to the fact that the SSH login with run the bash profile script located at `/etc/profile`.
In order to preserve the `$PATH` environment variable, either modify the `/etc/profile` file within the image or create a new `~/.bash_profile` file in the home directory for the login user. For CircleCI convenience images this would be located at `/home/circleci/.bash_profile`
#!/bin/bash
export PATH="/home/circleci/.local/bin:/home/circleci/bin:/opt/sbt/bin:/opt/apache-maven/bin:/opt/apache-ant/bin:/opt/gradle/bin:/usr/local/openjdk-14/bin:${PATH}"
Solution
This can be added to the Dockerfile with the following:
RUN echo "#!/bin/bash\nexport PATH=/home/circleci/.local/bin:/home/circleci/bin:/opt/sbt/bin:/opt/apache-maven/bin:/opt/apache-ant/bin:/opt/gradle/bin:/usr/local/openjdk-14/bin:${PATH}" > /home/circleci/.bash_profile
RUN chmod a+x /home/circleci/.bash_profile
Comments
Article is closed for comments.