From: Bastien Roucariès <ro...@debian.org>

Document PATH resolution, particularly null sequence and empty PATH

Signed-off-by: Bastien Roucariès <ro...@debian.org>
---
 man7/environ.7 | 42 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 34 insertions(+), 8 deletions(-)

diff --git a/man7/environ.7 b/man7/environ.7
index 8fc26bb92..11f30c332 100644
--- a/man7/environ.7
+++ b/man7/environ.7
@@ -68,7 +68,8 @@ The name of the logged-in user (used by some BSD-derived 
programs).
 Set at login time, see section NOTES below.
 .TP
 .B LOGNAME
-The name of the logged-in user (used by some System-V derived programs).
+The name of the logged-in user (used by some System-V derived programs
+and POSIX.1-2017).
 Set at login time, see section NOTES below.
 .TP
 .B HOME
@@ -94,19 +95,27 @@ for further details of the
 environment variables).
 .TP
 .B PATH
-The sequence of directory prefixes that
-.BR sh (1)
-and many other
-programs apply in searching for a file known by an incomplete pathname.
-The prefixes are separated by \(aq\fB:\fP\(aq.
-(Similarly one has
+The list of places that shells and other programs look in to find
+a command when given an incomplete pathname. Elements on this
+colon-separated  (\(aq\fB:\fP\(aq) list may be absolute or relative directory
+names or the zero-length string (interpreted as meaning the
+current directory, see section BUGS below).
+.B PATH
+is checked element by element (left to right), applying that directory
+name as a prefix to the pathname (if it does not already
+end in a slash, the expansion will insert one between
+the prefix and the filename),
+until a file is found with the appropriate name and execution
+permissions.
+.IP
+Similarly one has
 .B CDPATH
 used by some shells to find the target
 of a change directory command,
 .B MANPATH
 used by
 .BR man (1)
-to find manual pages, and so on)
+to find manual pages, and so on.
 .TP
 .B PWD
 The current working directory.
@@ -254,6 +263,9 @@ and
 are specified by
 POSIX.1-1996
 and should be reasonably portable.
+.PP
+.B PATH
+behavior is specified by  POSIX.1-2017.
 .SH NOTES
 The
 .BR prctl (2)
@@ -292,6 +304,12 @@ preserves all the variables from the existing shell, and
 or
 .I su -l
 is the recommended way of getting a full root environment.
+.PP
+The default search path (used when the environment
+does not contain the variable \fBPATH\fR)
+shows some variation across systems. See
+.B execlp (3)
+for documentation of the exact behavior.
 .SH BUGS
 Clearly there is a security risk here.
 Many a system command has been
@@ -330,6 +348,13 @@ The authors of
 .I gzip
 should consider renaming their option to
 .BR GZIP_OPT .
+.PP
+A zero-length element in
+.B PATH,
+which appears as two adjacent colons \(aq\fB::\fP\(aq or as a leading
+or trailing colon on the list, is replaced by implicit \(aq\fB.\fP\(aq.
+In order to be portable and strictly conformant to POSIX.1-2017, a user
+should use instead an explicit \(aq\fB.\fP\(aq.
 .SH SEE ALSO
 .BR bash (1),
 .BR csh (1),
@@ -343,6 +368,7 @@ should consider renaming their option to
 .BR execve (2),
 .BR clearenv (3),
 .BR exec (3),
+.BR execlp (3),
 .BR getenv (3),
 .BR putenv (3),
 .BR setenv (3),
-- 
2.29.2

Reply via email to