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

How to become the ultimate robot warrior...
Chrono Strike is a delightfully immersive beat ‘em up with a sense of humor (any game with a good Sims reference gets points in my book). [Read more] | Read more »
Tips and tricks to get a higher score in...
Snow Roll is a devilish endless runner very much in the vein of Flappy Bird. It revels in its dastardly level of difficulty, and doesn’t really care how angry you get at it as it knows you’ll keep coming back for more. [Read more] | Read more »
How to win big in Slots Deluxe
Cheating while gambling is illegal and morally wrong, and in some parts of the world it leads to men with names like Vinnie "Six Knuckles" Manchenzo beating you to a pulp in a dark alley. [Read more] | Read more »
How to take over the world in Dictator 2
Running a country isn't easy - especially when you're a dictator who wants to take over the world and crush everyone in your path while you do it. [Read more] | Read more »
Tips and tricks to get a higher score in...
Tank.iois - you guessed it! - another multiplayer arena battler likeAgar.io and Slither.io. It does differentiate itself by putting you in a tiny tank though, so it's not exactly the same. To help you get that all-important high score, we've got a... | Read more »
How to unlock characters in One Tap Tenn...
As the title suggests, One Tap Tennis requires only a single tap to play its particular brand of tennis, and rewards you with a ton of unlockable characters if you perform well. Fortunately for you, we at 148Apps have got a few tips and tricks to... | Read more »
Grab it now: Game Craft’s Legend of War...
The real time strategy game is now available for you to sink your teeth into, through the App Store and Google Play. Combining elements of skill, strategy and empire building, Legend of War is a real gamers’ game. [Read more] | Read more »
Skateboard Party 3 ft. Greg Lutzka (Gam...
Skateboard Party 3 ft. Greg Lutzka 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Skateboard Party is back! This third edition of the popular sports franchise features professional skater... | Read more »
Cubious (Games)
Cubious 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Cubious – How smart are you? How high is your IQube? Solve the impossible puzzles to find out, and help a lost little cube find his... | Read more »
Goat Simulator Waste of Space (Games)
Goat Simulator Waste of Space 1.1 Device: iOS Universal Category: Games Price: $4.99, Version: 1.1 (iTunes) Description: ** IMPORTANT - SUPPORTED DEVICESiPhone 4S, iPad 2, iPod Touch 5 or better.** | Read more »

Price Scanner via MacPrices.net

Enterprise Workers Pick Technology Over Perks...
New Adobe study shows surprising attitudes about office jobs and where the future of work is heading. Adobe has released survey findings revealing that a surprising 70 percent of U.S. office workers... Read more
Memorial Day Weekend Sale: $50-$100 off 11-in...
B&H Photo has 13″ and 11″ MacBook Airs with 256GB SSDs on sale for $50-$100 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 1.6GHz/256GB MacBook Air: $999 $100 off MSRP... Read more
Memorial Day Weekend Sales: Apple MacBook Pro...
B&H Photo has 13″ and 15″ Retina MacBook Pros on sale for up to $210 off MSRP. Shipping is free, and B&H charges NY tax only: - 15″ 2.2GHz Retina MacBook Pro: $1799 $200 off MSRP - 15″ 2.5GHz... Read more
Memorial Day Weekend Sales: Apple iMacs and M...
Take up to $150 off the price of a new iMac or Mac mini at the following Apple resellers this Memorial Day weekend: iMacs: B&H Photo has 21″ and 27″ iMacs on sale for up to $150 off MSRP... Read more
Apple refurbished Retina MacBook Pros availab...
Apple has Certified Refurbished 2015 13″ and 15″ Retina MacBook Pros available for up to $380 off the cost of new models. An Apple one-year warranty is included with each model, and shipping is free... Read more
Apple refurbished 11-inch MacBook Airs availa...
Apple has Certified Refurbished 11″ MacBook Airs (the latest models), available for up to $170 off the cost of new models. An Apple one-year warranty is included with each MacBook, and shipping is... Read more
Goal Zero and OtterBox Partner to Expand iPh...
Goal Zero, specialists in portable power, have announced a partnership with OtterBox, brand smartphone case protection, to offer the Slide and Slide Plus Batteries as modules compatible with the new... Read more
15-inch Retina MacBook Pros on sale for up to...
B&H Photo has 15″ Retina MacBook Pros on sale for up to $210 off MSRP. Shipping is free, and B&H charges NY tax only: - 15″ 2.2GHz Retina MacBook Pro: $1799 $200 off MSRP - 15″ 2.5GHz Retina... Read more
Clearance 2015 13-inch MacBook Airs available...
B&H Photo has clearance 2015 13″ MacBook Airs available for $250 off original MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 1.6GHz/4GB/128GB MacBook Air (MJVE2LL/A): $799... Read more
Apple refurbished Apple TVs available for up...
Apple has Certified Refurbished 32GB and 64GB Apple TVs available for up to $30 off the cost of new models. Apple’s standard one-year warranty is included with each model, and shipping is free: -... Read more

Jobs Board

*Apple* Solutions Consultant - APPLE (United...
Job Summary As an Apple Solutions Consultant, you'll be the link between our future customers and our products. You'll showcase your entrepreneurial spirit as you Read more
*Apple* Project Engineer - Smart Source Inc...
SmartSource is in need of an Apple Project Engineer for a 12 month contract opportunity in Pittsburg, PA. Role: Apple Project Engineer Location: Pittsburg, PA Read more
Automotive Sales Consultant - Apple Ford Linc...
…you. The best candidates are smart, technologically savvy and are customer focused. Apple Ford Lincoln Apple Valley is different, because: $30,000 annual salary Read more
Service Assistant - *Apple* Chevrolet *App...
Apple Automotive is one of the fastest growing dealer...and it shows. Consider making the switch to the Apple Automotive Group today! At Apple Automotive, we Read more
Editor, *Apple* News - APPLE (United States...
Job Summary The Apple News team is looking for a passionate and knowledgeable editor with experience covering entertainment/pop culture and experience running social Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.