Report this

What is the reason for this report?

Set Environment variables at creation

Posted on June 29, 2016

Very simply, I have been struggling to set system-wide environment variables while my droplet is being created. I have attempted to set them via the User-Data option on the dashboard, both using runcmd and straight bash.

The hurdle I am hitting is that after I echo the variables to ~.bashrc, it seems like source ~/.bashrc is not firing.

Once I ssh into the server, I can source and everything is fine, but I would prefer to have them set out of the gate.

Perhaps I am tackling this problem from the wrong angle, as I am new to this sort of thing, but I am trying to avoid manually setting them every time I spin up a new droplet.

Thanks in advance!



This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Try adding the following to your ~/.profile file (if it is missing):

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

Add somthing like this to your user-data section when spinning up a new droplet.

User Data
#cloud-config

users:
  - name: sammy
    shell: /bin/bash
    groups: sudo
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh-authorized-keys:
      - your_public_ssh_key

write_files:
  - path: /home/sammy/.profile
    owner: sammy:sammy
    permissions: '0644'
    content: |
      if [ -n "$BASH_VERSION" ]; then
          if [ -f "$HOME/.bashrc" ]; then
              . "$HOME/.bashrc"
          fi
      fi

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.