How do I set a permanent environment variable (i.e. one that does not need exporting every time I start a new Terminal session) in Mac OS X 10.9? I've found a number of answers about modifying my .bash_profile
and .profile
, however neither of these options seem to work as permanent solutions - only temporary. The variable I'm trying to set is MULE_HOME
. I have the following line in my bash profile:
export MULE_HOME=$(/opt/mule-standalone-3.4.0)
However, when I start Terminal I get the following line (not sure if this is normal behaviour?):
-bash: /opt/mule-standalone-3.4.0: is a directory
And running a simple env
command returns the following:
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/fc/68bqp4jj411gynj5qvwhq6z1shs1fy/T/
Apple_PubSub_Socket_Render=/tmp/launch-xKtkql/Render
TERM_PROGRAM_VERSION=326
TERM_SESSION_ID=E97BFE4B-AF85-4933-B252-0883CC085349
USER=dan
SSH_AUTH_SOCK=/tmp/launch-rEmTWW/Listeners
__CF_USER_TEXT_ENCODING=0x730C85DE:0:0
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
__CHECKFIX1436934=1
PWD=/Users/dan
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
LANG=en_GB.UTF-8
MULE_HOME=
SHLVL=1
HOME=/Users/dan
LOGNAME=danwiseman
_=/usr/bin/env
In order to get around this I'm currently having to type export MULE_HOME=/opt/mule-standalone-3.4.0
every time I start a new Terminal session which, whilst not strenuous, is a little inconvenient. What am I doing wrong here that is causing the variable to only be set temporarily? Thanks in advance.
To make permanent changes to the environment variables for all new accounts, go to your /etc/skel files, such as . bashrc , and change the ones that are already there or enter the new ones. When you create new users, these /etc/skel files will be copied to the new user's home directory.
The shell uses environment variables to store information, such as the name of the current user, the name of the host computer, and the default paths to any commands.
Just did this really easy and quick. First create a ~/.bash_profile from terminal:
touch ~/.bash_profile
then
open -a TextEdit.app ~/.bash_profile
add
export TOMCAT_HOME=/Library/Tomcat/Home
Save document in TextEdit and you are done.
Drop the $(...)
bit, which would attempt to execute the command within the brackets and set $MULE_HOME
to whatever it produces. In your case /opt/mule-standalone-3.4.0
is not an executable, hence the error you are getting.
export MULE_HOME=/opt/mule-standalone-3.4.0
and use ~/.bashrc
not ~/.bash_profile
.
EDIT: It seems opinion is that you should set environment variables in your ~/.bash_profile
script, and not ~/.bashrc
script.
In case anyone on MacOS 10.15 (Catalina) and up come here, you need to use a .zshenv
file instead of .bash_profile
. This is because by default since Catalina, the terminal uses zhs instead of bash.
.zshenv
file:touch ~/.zshenv
open -a TextEdit.app ~/.zshenv
export NAME=path
ex: export PICO_SDK_PATH=/Users/[redacted]/Developer/pico-sdk
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With