Directives/path

From Syslinux Wiki
Jump to: navigation, search

The objective of the PATH directive is to search for c32 library modules, which are dependencies of other c32 modules. Since there is no absolute distinction between "main" c32 modules and "library" modules, the PATH directive applies to all c32 modules, and only to them.

The PATH directive is not a replacement for using actual paths in the configuration file. With the introduction of c32 dependencies (or "library modules"), there is a need to tell the main modules where to search for their respective dependencies, according to the directory structure that the user sets up.

The current working directory (CWD) is always searched first, before PATH, when attempting to open a file name. The CWD is not affected when specifying a file with an absolute path. For example, given the following file system layout,

  /boot/
    	/bin/
      		ls.c32
      		libls.c32
    	/foo/
      		libls.c32

assuming that the current working directory is /boot/foo, and assuming that libls.c32 is a dependency of ls.c32, then executing /boot/bin/ls.c32 will cause /boot/foo/libls.c32 to be loaded, not /boot/bin/libls.c32, even if /boot/bin is specified in the PATH directive of a configuration file.

The reason that things work this way is that typically a user will install all library files in the Syslinux installation directory, as specified with the "--directory" installer option. This method allows users to omit the PATH directive from their configuration file and still have things work correctly.