The Haiku/BeOS Tip Server
Tips and tricks for Haiku/BeOS users

The right way to find system paths

Contributed by: Scot Hacker
This tip is valid for: Both BeOS and Haiku

Because BeOS may one day go multi-user, and because it’s possible for users to hack BeOS into custom configurations, and for a variety of other reasons, it’s a bad idea to hard-code system paths such as /boot/home or /boot/beos/bin. BeOS provides a mechanism that will identify the proper directory for any given purpose. These directories are stored in the Storage Kit, and can be located from the shell with the finddir command.

You’ll find a complete list of “magic names” in the Global Constants and Defined Types section of the BeBook (see the “Directories” section). For example, one of the defined names is “B_BEOS_SYSTEM_DIRECTORY”. If you open a Terminal and type:

finddir B_BEOS_SYSTEM_DIRECTORY

the shell returns:

/boot/beos/system

If you type:

finddir B_COMMON_ADDONS_DIRECTORY

the shell returns:

/boot/home/config/add-ons

and so on. So the right way to find the user’s home directory from within a script would be something like:

UserHome=$(finddir B_USER_DIRECTORY)

The value of $UserHome on most systems will then be /boot/home, but the script won’t break in the future if things move around.

Posted in Scripting


(comments are closed).