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

Lyn 1.7.2 - Lightweight image browser an...
Lyn is a fast, lightweight image browser and viewer designed for photographers, graphic artists, and Web designers. Featuring an extremely versatile and aesthetically pleasing interface, it delivers... Read more
Lyn 1.7.2 - Lightweight image browser an...
Lyn is a fast, lightweight image browser and viewer designed for photographers, graphic artists, and Web designers. Featuring an extremely versatile and aesthetically pleasing interface, it delivers... Read more
Tunnelblick 3.6.7beta02 - GUI for OpenVP...
Tunnelblick is a free, open source graphic user interface for OpenVPN on OS X. It provides easy control of OpenVPN client and/or server connections. It comes as a ready-to-use application with all... Read more
jAlbum Pro 13.4 - Organize your digital...
jAlbum Pro has all the features you love in jAlbum, but comes with a commercial license. You can create gorgeous custom photo galleries for the Web without writing a line of code! Beginner-friendly... Read more
calibre 2.65.1 - Complete e-book library...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
jAlbum 13.4 - Create custom photo galler...
With jAlbum, you can create gorgeous custom photo galleries for the Web without writing a line of code! Beginner-friendly, with pro results - Simply drag and drop photos into groups, choose a design... Read more
Backblaze 4.2.0.966 - Online backup serv...
Backblaze is an online backup service designed from the ground-up for the Mac. With unlimited storage available for $5 per month, as well as a free 15-day trial, peace of mind is within reach with... Read more
Backblaze 4.2.0.966 - Online backup serv...
Backblaze is an online backup service designed from the ground-up for the Mac. With unlimited storage available for $5 per month, as well as a free 15-day trial, peace of mind is within reach with... Read more
Tunnelblick 3.6.7beta02 - GUI for OpenVP...
Tunnelblick is a free, open source graphic user interface for OpenVPN on OS X. It provides easy control of OpenVPN client and/or server connections. It comes as a ready-to-use application with all... Read more
calibre 2.65.1 - Complete e-book library...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more

Siralim 2 (RPG / Roguelike) (Games)
Siralim 2 (RPG / Roguelike) 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Siralim 2 is an old-school monster catching RPG. Summon and customize hundreds of creatures to fight for you as... | Read more »
Clean Text (Productivity)
Clean Text 1.0 Device: iOS Universal Category: Productivity Price: $3.99, Version: 1.0 (iTunes) Description: | Read more »
Gemini - A Journey of Two Stars (Games)
Gemini - A Journey of Two Stars 1.0.1 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.1 (iTunes) Description: *** SPECIAL LAUNCH SALE: $2.99 (25% off) *** "A mesmerizing and unexpectedly emotional journey." -- Los... | Read more »
How to get four NFL superstars for your...
Even though you're probably well on your way to building a top notch squad for the new season in Madden NFL Mobile, let's say you could beef it up by adding Rob Gronkowski, Antonio Brown, Von Miller, and Todd Gurley to your roster. That's... | Read more »
Cartoon Network Superstar Soccer: Goal!!...
Cartoon Network Superstar Soccer: Goal!!! – Multiplayer Sports Game Starring Your Favorite Characters 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Become a soccer superstar with your... | Read more »
NFL Huddle: What's new in Topps NFL...
Can you smell that? It's the scent of pigskin in the air, which either means that cliches be damned, pigs are flying in your neck of the woods, or the new NFL season is right around the corner. [Read more] | Read more »
FarmVille: Tropic Escape tips, tricks, a...
Maybe farming is passé in mobile games now. Ah, but farming -- and doing a lot of a other things too -- in an island paradise might be a little different. At least you can work on your tan and sip some pina coladas while tending to your crops. [... | Read more »
Become the King of Avalon in FunPlus’ la...
King Arthur is dead. Considering the legend dates back to the 5th century, it would be surprising if he wasn’t. But in the context of real-time MMO game King of Avalon: Dragon Warfare, Arthur’s death plunges the kingdom into chaos. Evil sorceress... | Read more »
Nightgate (Games)
Nightgate 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: *** Launch Sale: 25% OFF for a limited time! *** In the year 2398, after a great war, a network of intelligent computers known as... | Read more »
3 best fantasy football apps to get you...
Last season didn't go the way you wanted it to in fantasy football. You were super happy following your drafts or auctions, convinced you had outsmarted everyone. You were all set to hustle on the waiver wire, work out some sweet trades, and make... | Read more »

Price Scanner via MacPrices.net

Global Tablet Shipments Projected to Increase...
Digitimes’ Jim Hsiao reports that global tablet shipments will increase by 16.3 percent sequentially to reach nearly 47 million units in 2016′s third quarter, but that volume will still be down over... Read more
Apple’s 2016 Back to School promotion: Free B...
Purchase a new Mac or iPad using Apple’s Education Store and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free, and... Read more
Apple refurbished iPad Air 2s available start...
Apple has Certified Refurbished iPad Air 2 available starting at $339. Apple’s one-year warranty is included with each model, and shipping is free: - 128GB Wi-Fi iPad Air 2: $499 - 64GB Wi-Fi iPad... Read more
13-inch 2.5GHz MacBook Pro available for $961...
Overstock has the 13″ 2.5GHz MacBook Pro available for $961.63 including free shipping. Their price is $138 off MSRP. Read more
Clearance 12-inch Retina MacBooks, Apple refu...
Apple has Certified Refurbished 2015 12″ Retina MacBooks available starting at $929. Apple will include a standard one-year warranty with each MacBook, and shipping is free. The following... Read more
BookBook Releases SurfacePad, BookBook &...
BookBook has released three new covers just for iPad Pro: SurfacePad, BookBook and BookBook Rutledge Edition. BookBook for iPad Pro is a gorgeous leather case reminiscent of a vintage sketchbook.... Read more
Clean Text 1.0 for iOS Reduces Text Cleanup a...
Apimac today announced availability of Clean Text for iOS, a tool for webmasters, graphic designers, developers and magazine editors to reduce text cleanup and editing time, and also for any iPhone... Read more
27-inch iMacs on sale for up to $220 off MSRP
B&H Photo has 27″ Apple iMacs on sale for up to $200 off MSRP including free shipping plus NY sales tax only: - 27″ 3.3GHz iMac 5K: $2099 $200 off MSRP - 27″ 3.2GHz/1TB Fusion iMac 5K: $1899 $100... Read more
Apple refurbished 13-inch MacBook Airs availa...
Apple has Certified Refurbished 2016 and 2015 13″ MacBook Airs now available starting at $849. An Apple one-year warranty is included with each MacBook, and shipping is free: - 2016 13″ 1.6GHz/8GB/... Read more
Apple refurbished iPad mini 2s available for...
Apple is offering Certified Refurbished iPad mini 2s for up to $80 off the cost of new minis. An Apple one-year warranty is included with each model, and shipping is free: - 16GB iPad mini 2 WiFi: $... Read more

Jobs Board

*Apple* /Mac Support Engineer - GFI Digital,...
FI Digital, Inc. is currently seeking candidates for a full time Apple Support Engineer to add to our Maryland Heights, Missouri IT team. Candidates must be dynamic Read more
SW Engineer *Apple* TV - Apple Inc. (United...
The Apple TV team is looking for excellent software engineers with experience in hardware, media management, media playback, content delivery and a passion for Read more
Senior *Apple* Administrator - Pratt Instit...
POSITION SUMMARY: Directs the coordination and standardization of campus-wide Apple systems, including planning, analysis and implementation of Apple -related Read more
*Apple* Solutions Consultant - Apple (United...
# Apple Solutions Consultant Job Number: 51218534 Pleasant Hill, California, United States Posted: Aug. 18, 2016 Weekly Hours: 40.00 **Job Summary** As an Apple Read more
*Apple* Retail - Multiple Positions Victor,...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.