TweetFollow Us on Twitter

Environment Variables What they are and how to use them

Volume Number: 23 (2007)
Issue Number: 07
Column Tag: MacEnterprise

Environment Variables

What they are and how to use them

By Philip Rinehart, Yale University


As with any Unix operating system, Macintosh OS X recognizes the use of environment variables. For a quick refresher, environment variables are traditionally used in shell scripts to retrieve information about the operating environment. Common environment variables are used each time a new Terminal session is launched, including PATH, HOME, and other less common variables. OS X extends this concept with application bundles and Launch Services. Let's begin by examining the traditional use of environment variables by OS X and their associated scope.

The Terminal

The single most common invocation of environment variables is when the Terminal application is launched. Each time a new shell is opened by the Terminal application, a new session is created with system wide environment variables. Let's look at the two environment variables that are created for each session in a standard Tiger installation.


The PATH environment variable is probably the single most common variable that is changed in any terminal session. In a standard OS X installation, the file /etc/profile is used to set the PATH variable. It is also used for any remote session when connected to any remote machine with ssh. By default, the variable is set at PATH="/bin:/sbin:

/usr/bin:/usr/sbin". Why might one change this default value? What if useful binaries live in other directories?

As an example, a standard fink or macports installation installs binaries either in /sw or /opt/local/bin. In this case, the modification of profile to reflect the directory is important. For Macports, open profile in an editor and add /opt/local/bin to the PATH. Any session created with the Terminal application or via ssh will now search the PATH including /opt/local/bin. Any binary that has been installed in /opt/local/bin is now available to a Terminal session or a remote ssh session.

One quick note: be careful when setting the PATH system wide, as the PATH is searched beginning with the first directory listed. When installing macports, or fink for that matter, if the directory is listed first, the binaries installed by these collections are used first. This might be problematic if the system binary is what is desired when calling any program.


PS1 is created for each new Terminal window through use a second file in /etc, bashrc. This file creates the custom command prompt, showing hostname, current working directory, and username. This file can also be altered, as profile can, so that any user logging into the system has an identical command prompt. Note though, the bashrc file is only read when using the bash shell (the default shell in OS X 10.4), not when using other shells such as tcsh, or zsh.

One last bit about OS X, and the use of the Terminal application. Environment variables can be set in any Terminal window. It is important to note that any newly set environment variables are not inherited if a new shell session is invoked, and cannot, therefore, be depended on. For this reason, it is best practice, at least, to edit profile to apply environment variables for each user on the host operating system.

Graphical User Interface applications

OS X has the unique ability to use a plist stored in ~/.MacOSX/environment.plist to access any environment variable. The plist is registered by loginwindow, so that non-Terminal based applications could use environment variables for their operation. However, one environment variable, DYLD_LIBRARY_PATH, was noted as a security risk in Security Update 2007-004. As noted on the MacEnterprise list, the change in behavior affected some applications, most notably the IBM Workplace Forms Viewer, used for governmental grant applications. If the environment.plist method is subject to change, is there a more reliable method to access environment variables? Yes, application specific environment variables!

Application-specific environment variables

Prior to launching any application, environment variables can be set in the info.plist file within an application bundle. Launch Services then reads the environment variable, and uses it for dynamic configuration of the application. This method is exactly what was used from a suggestion by Josh Wisenbaker, and implemented by Ben Hanes. Let's look at how it works.

By default, an application created in XCode includes a bare bones Info.plist file. The file contains basic information about the application bundle. It commonly contains information about the application, copyright, icon file information as well as other application specific information. It really is up to the developer to specify information as listed in the Apple Runtime Configuration Guidelines. For the purpose of this article, the particular key of interest is LSEnvironment. It is a dictionary value, and contains a complete list of environment variables that are read prior to launch of the application bundle. Launch Services reads the variables, and uses them when the application is launched. It is important to note, this use of environment variable only works when the application is launched from the Finder. Let's return to the example application that created problems to see how this works in practice.

The first step is opening the application bundle. Most bundles are similar to Figure 1 below.

Figure 1.

The file that needs to be edited for any application bundle to register an environment variable is Info.plist. Opening the IBM Workplace Forms Viewer Info.plist, add the environment variables required by this application. Here is the relevant dictionary that is added:

      <string>/Applications/IBM Workplace Forms/IBM Workplace Forms¬
      MacOS:/Applications/IBM Workplace Forms/IBM Workplace Forms¬
      <string>/Applications/IBM Workplace Forms/IBM Workplace Forms</string>

Take a close look, the key is specified in this example as documented by Apple's Developer documentation, LSEnvironment. Two separate environmental variables are then set, DYLD_LIBRARY_PATH, and PUREEDGE_INI. Other applications can use this exact method, including SyBase SQL Anywhere 9 and USAnimation's Harmony.

Armed with the knowledge of how to set environment variables, both for the terminal and for Finder based applications, it should be trivial to correct applications which do not function as expected if environment variables are not set. Until next month, see you on the lists!

Philip Rinehart is co-chair of the steering committee leading the Mac OS X Enterprise Project ( and is the Lead Mac Analyst at Yale University. He has been using Macintosh Computers since the days of the Macintosh SE, and Mac OS X since its Developer Preview Release. Before coming to Yale, he worked as a Unix system administrator for a dot-com company. He can be reached at:

The MacEnterprise project is a community of IT professionals sharing information and solutions to support Macs in an enterprise. We collaborate on the deployment, management, and integration of Mac OS X client and server computers into multi-platform computing environments.


Community Search:
MacTech Search:

Software Updates via MacUpdate

Warhammer 40,000: Freeblade guide - How...
Warhammer 40,000: Freebladejust launched in the App Store and it lets you live your childhood dream of blowing up and slashing a bunch of enemies as a massive, hulking Space Marine. It's not easy being a Space Marine though - and particularly if... | Read more »
Gopogo guide - How to bounce like the be...
Nitrome just launched a new game and, as to be expected, it's a lot of addictive fun. It's called Gopogo, and it challenges you to hoparound a bunch of platforms, avoiding enemies and picking up shiny stuff. It's not easy though - just like the... | Read more »
Sago Mini Superhero (Education)
Sago Mini Superhero 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: KAPOW! Jack the rabbit bursts into the sky as the Sago Mini Superhero! Fly with Jack as he lifts impossible weights,... | Read more »
Star Wars: Galaxy of Heroes guide - How...
Star Wars: Galaxy of Heroes is all about collecting heroes, powering them up, and using them together to defeat your foes. It's pretty straightforward stuff for the most part, but increasing your characters' stats can be a bit confusing because it... | Read more »
The best cooking apps (just in time for...
It’s that time of year again, where you’ll be gathering around the dinner table with your family and a huge feast in front of you. [Read more] | Read more »
Square Rave guide - How to grab those te...
Square Rave is an awesome little music-oriented puzzle game that smacks of games like Lumines, but with its own unique sense of gameplay. To help wrap your head around the game, keep the following tips and tricks in mind. [Read more] | Read more »
Snowboard Party 2 (Games)
Snowboard Party 2 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Crowned the best snowboarding game available on the market, Snowboard Party is back to fulfill all your adrenaline needs in... | Read more »
One Button Travel (Games)
One Button Travel 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: “To cut a long story short, If you like interactive fiction, just go buy this one.” - “Oozes the polish that... | Read more »
Light Apprentice Volume 1 (Games)
Light Apprentice Volume 1 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Light Apprentice Volume 1 includes Chapters 1 to 4, all gathered in a new exclusive game. When life in the world of... | Read more »
The best games like Animal Crossing on m...
Animal Crossing amiibo Festival is out right now for the Wii U, reminding us of just how much fun that world can be. Or at least to go back and check in on our villages once in a while. [Read more] | Read more »

Price Scanner via

iMobie Releases its Ace iOS Cleaner PhoneClea...
iMobie Inc. has announced the new update of PhoneClean 4, its iOS cleaner designed to reclaim wasted space on iPhone/iPad for use and keep the device fast. Alongside, iMobie hosts a 3-day giveaway of... Read more
U.S. Cellular Offering iPad Pro
U.S. Cellular today announced that it is offering the new iPad Pro with Wi-Fi + Cellular, featuring a 12.9-inch Retina display with 5.6 million pixels — the most ever in an iOS device. U.S. Cellular... Read more
Newegg Canada Unveils Black Friday Deals for...
Newegg Canada is offering more than 1,000 deep discounts to Canadian customers this Black Friday, available now through Cyber Monday, with new deals posted throughout the week. “Black Friday is... Read more
Black Friday: Macs on sale for up to $500 off...
BLACK FRIDAY B&H Photo has all new Macs on sale for up to $500 off MSRP as part of their early Black Friday sale including free shipping plus NY sales tax only: - 15″ 2.2GHz Retina MacBook Pro: $... Read more
Black Friday: Up to $125 off iPad Air 2s at B...
BLACK FRIDAY Walmart has the 16GB iPad Air 2 WiFi on sale for $100 off MSRP on their online store. Choose free shipping or free local store pickup (if available): - 16GB iPad Air 2 WiFi: $399, save $... Read more
Black Friday: iPad mini 4s on sale for $100 o...
BLACK FRIDAY Best Buy has iPad mini 4s on sale for $100 off MSRP on their online store for Black Friday. Choose free shipping or free local store pickup (if available): - 16GB iPad mini 4 WiFi: $299.... Read more
Black Friday: Apple Watch for up to $100 off...
BLACK FRIDAY Apple resellers are offering discounts and bundles with the purchase of an Apple Watch this Black Friday. Below is a roundup of the deals being offered by authorized Watch resellers:... Read more
Black Friday: Target offers 6th Generation iP...
BLACK FRIDAY Save $40 to $60 on a 6th generation iPod touch at Target with free shipping or free local store pickup (if available). Sale prices for online orders only, in-store prices may vary: -... Read more
Black Friday: Walmart and Target offer iPod n...
BLACK FRIDAY Walmart has the 16GB iPod nano (various colors) on sale for $119.20 on their online store for a limited time. That’s $30 off MSRP. Choose free shipping or free local store pickup (if... Read more
Black Friday deals on the Apple Watch and App...
Apple resellers are offering discounts and bundles with the purchase of an Apple Watch this Black Friday weekend. Below is a roundup of the deals being offered by authorized Watch resellers: Apple... Read more

Jobs Board

Storefront Operations Coordinator, *Apple* -...
# Storefront Operations Coordinator, Apple -Latin America Job Number: 43587750 Miami, Florida, United States Posted: Oct. 16, 2015 Weekly Hours: 40.00 **Job Summary** The Read more
*Apple* Enterprise / Government Professional...
# Apple Enterprise / Gove ment Professional Services Engineer Job Number: 42292976 Reston, Virginia, United States Posted: Aug. 18, 2015 Weekly Hours: 40.00 **Job Read more
iOS Wallet & *Apple* Pay Engineer - App...
# iOS Wallet & Apple Pay Engineer Job Number: 40586801 Santa Clara Valley, Califo ia, United States Posted: Nov. 16, 2015 Weekly Hours: 40.00 **Job Summary** The iOS Read more
Software Engineer, *Apple* Watch - Clock Fa...
# Software Engineer, Apple Watch - Clock Face Team Job Number: 44368761 Santa Clara Valley, Califo ia, United States Posted: Nov. 14, 2015 Weekly Hours: 40.00 **Job Read more
Administrative Assistant, *Apple* Online St...
# Administrative Assistant, Apple Online Store Job Number: 43992352 Santa Clara Valley, Califo ia, United States Posted: Nov. 9, 2015 Weekly Hours: 40.00 **Job Summary** Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.