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

HISTORY

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.

PATH

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

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:

   <key>LSEnvironment</key>
   <dict>
      <key>DYLD_LIBRARY_PATH</key>
      <string>/Applications/IBM Workplace Forms/IBM Workplace Forms Viewer.app/Contents/¬
      MacOS:/Applications/IBM Workplace Forms/IBM Workplace Forms Viewer.app/Contents/¬
      MacOS/API/70/system</string>
      <key>PUREEDGE_INI</key>
      <string>/Applications/IBM Workplace Forms/IBM Workplace Forms Viewer.app/Contents/MacOS/PureEdgeAPI.ini</string>
   </dict>

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 (macenterprise.org) 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: philip.rinehart@yale.edu.

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

Duet 1.6.9.3 - Use your iPad as an exter...
Duet is the first app that allows you to use your iDevice as an extra display for your Mac using the Lightning or 30-pin cable. Note: This app requires a $14.99 iOS companion app. Version 1.6.9.3:... Read more
iExplorer 4.1.10 - View and transfer fil...
iExplorer is an iPhone browser for Mac lets you view the files on your iOS device. By using a drag and drop interface, you can quickly copy files and folders between your Mac and your iPhone or... Read more
iExplorer 4.1.10 - View and transfer fil...
iExplorer is an iPhone browser for Mac lets you view the files on your iOS device. By using a drag and drop interface, you can quickly copy files and folders between your Mac and your iPhone or... Read more
Adobe InCopy CC 2018 13.0.1.207 - Create...
InCopy CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous InCopy customer). Adobe InCopy CC 2018, ideal for large team projects... Read more
Microsoft Office 2016 15.40 - Popular pr...
Microsoft Office 2016 - Unmistakably Office, designed for Mac. The new versions of Word, Excel, PowerPoint, Outlook and OneNote provide the best of both worlds for Mac users - the familiar Office... Read more
Adobe InDesign CC 2018 13.0.1.207 - Prof...
InDesign CC 2018 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous InDesign customer). Adobe InDesign CC 2018 is part of Creative Cloud.... Read more
Apple iOS 11.1.2 - The latest version of...
iOS 11 sets a new standard for what is already the world’s most advanced mobile operating system. It makes iPhone better than before. It makes iPad more capable than ever. And now it opens up both to... Read more
Slack 2.9.0 - Collaborative communicatio...
Slack is a collaborative communication app that simplifies real-time messaging, archiving, and search for modern working teams. Version 2.9.0: Slack now officially, and fully, supports Japanese.... Read more
iExplorer 4.1.9 - View and transfer file...
iExplorer is an iPhone browser for Mac lets you view the files on your iOS device. By using a drag and drop interface, you can quickly copy files and folders between your Mac and your iPhone or... Read more
PCalc 4.5.3 - Full-featured scientific c...
PCalc is a full-featured, scriptable scientific calculator with support for hexadecimal, octal, and binary calculations, as well as an RPN mode, programmable functions, and an extensive set of unit... Read more

Latest Forum Discussions

See All

Mighty Battles guide - how to build a so...
Mighty Battles, the latest title from Hothead Games, is set to take the App Store by storm. The game puts a welcome twist on lane battlers, adding FPS elements to spice things up a bit. You'll collect cards to put your own military unit to gether,... | Read more »
Rules of Survival guide - how to be the...
The PUBG craze makes its way to mobile, with more and more battle royale games debuting on iOS and Android. Rules of Survival joins the ranks of mobile PUBG-likes, offering a classic battle royale experiences that doesn't vary too much from its... | Read more »
The best new games we played this week -...
The weekend is upon us friends, and it's time to take a look back and reflect on all of the wonderful games we've played over the past few days. This week was jam packed with new releases. There were some big, long awaited launches, some fun... | Read more »
Lineage II: Revolution guide - tips and...
At long last, Lineage II: Revolution has now come to western shores, bring Netmarble's sweeping MMORPG to mobile devices. It's an addictive, epic experience, but some of the systems in the game can be a bit overwhelming. Here are a few tips to help... | Read more »
A Boy and His Blob (Games)
A Boy and His Blob 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: | Read more »
Fight terrible monsters and collect epic...
Released on Western markets early last month, Dragon Project, created by Japanese developer COLOPL, brings epic monster hunting action to mobile for the very first time. Collect a huge array of weapons and armor, and join up with friends to fight... | Read more »
I Am The Hero (Games)
I Am The Hero 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: I Am The Hero is a pixel art, beat 'em up, fighting game that tells the story of a "Hero" with a glorious but mysterious past.... | Read more »
Kauldron (Music)
Kauldron 1.0 Device: iOS Universal Category: Music Price: $3.99, Version: 1.0 (iTunes) Description: Kauldron is our warmest sounding, punchiest synth yet! A completely new modeling technology, combined with carefully designed... | Read more »
Lineage II: Revolution is mobile’s bigge...
NCSoft’s hit fantasy MMORPG series has just made the leap to mobile with the help of Netmarble in Lineage II: Revolution. With over 1.5 million players having already pre-registered ahead of the game’s launch, Revolution hit the app stores... | Read more »
Swing skilfully in new physics-based pla...
Sometimes it’s the most difficult of obstacles that can be the most rewarding. One game hoping to prove this is OCMO, the new tough but fair platformer from developers Team Ocmo. Primed to set every speedrunner’s pulse racing, as an otherworldly... | Read more »

Price Scanner via MacPrices.net

Black Friday pricing on Macs and iPads now av...
B&H Photo has lowered prices on many Macs, iPads, and iPad Pros as part of their Black Friday week sale. Save up to $200 on MacBooks and iMacs and up to $150 on iPads. B&H charges sales tax... Read more
Best Apple iPad deals this weekend, up to $80...
Apple resellers are offering 9.7″ iPads and 10.5″ iPad Pros for up to $80 off MSRP this weekend as part of their early Holiday and Black Friday sales: Adorama is offering new 2017 9.7″ 32GB WiFi... Read more
Early Black Friday sale: Apple iMacs for up t...
B&H Photo has 27-inch iMacs in stock and on sale for up $130-$150 off MSRP including free shipping. B&H charges sales tax in NY & NJ only: – 27″ 3.8GHz iMac (MNED2LL/A): $2149 $150 off... Read more
Apple restocks refurbished Mac minis starting...
Apple has restocked Certified Refurbished Mac minis starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: – 1.4GHz Mac mini: $419 $80 off MSRP – 2.6GHz Mac... Read more
Save on 12″ MacBooks, Apple refurbished model...
Apple has Certified Refurbished 2017 12″ Retina MacBooks available for $200-$240 off the cost of new models. Apple will include a standard one-year warranty with each MacBook, and shipping is free.... Read more
Early Holiday sale: 12″ iPad Pros for up to $...
B&H Photo has 12″ iPad Pros on sale today for up to $130 off MSRP. Shipping is free, and B&H collects no sales tax outside NY & NJ: – 12″ 64GB WiFi iPad Pro: $749, save $50 – 12″ 256GB... Read more
Holiday sale prices on Apple 13″ MacBook Pros...
B&H Photo has 2017 13″ MacBook Pros in stock today and on sale for $100-$150 off MSRP, each including free shipping plus NY & NJ sales tax only: – 13-inch 2.3GHz/128GB Space Gray MacBook Pro... Read more
Sale: 13″ MacBook Airs starting at $899, $100...
B&H Photo has 2017 13″ MacBook Airs on sale today for $100 off MSRP including free shipping. B&H charges NY & NJ sales tax only: – 13″ 1.8GHz/128GB MacBook Air (MQD32LL/A): $899, $100 off... Read more
Week’s Best Deal on 13″ MacBook Pros: Apple r...
Apple has a full line of Apple Certified Refurbished 2017 13″ MacBook Pros available for $200-$300 off MSRP. A standard Apple one-year warranty is included with each MacBook, and shipping is free.... Read more
Deal: 15″ 2.6GHz MacBook Pro for $1799 w/free...
B&H Photo has clearance 2016 15″ 2.6GHz Touch Bar MacBook Pros in stock today and available for $600 off original MSRP. Shipping is free, and B&H charges NY & NJ sales tax only: – 15″ 2.... Read more

Jobs Board

Product Manager - *Apple* Pay on the *Appl...
Job Summary Apple is looking for a talented product manager to drive the expansion of Apple Pay on the Apple Online Store. This position includes a unique Read more
*Apple* Pro/Consumer Apps Support Engineer -...
…exemplify AppleCare's expert technical support paired with exceptional customer service for Apple 's software apps. This person is a problem solver, who understands Read more
Partner Marketing Manager, *Apple* Pay - Ap...
Job Summary The Apple Pay partner marketing team is looking for a Marketing Manager to develop and drive US programs. The right candidate will be passionate about Read more
*Apple* Solution Consultant - Apple (United...
# Apple Solution Consultant - Rochester, MN Job Number: 113037950 Rochester, MN, Minnesota, United States Posted: 19-Sep-2017 Weekly Hours: 40.00 **Job Summary** Are Read more
Sr. Experience Producer, Today at *Apple* -...
# Sr. Experience Producer, Today at Apple Job Number: 56495251 Santa Clara Valley, California, United States Posted: 23-Jun-2017 Weekly Hours: 40.00 **Job Summary** Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.