summaryrefslogtreecommitdiffstats
path: root/man-pages-posix-2003/man1p/cd.1p
diff options
context:
space:
mode:
Diffstat (limited to 'man-pages-posix-2003/man1p/cd.1p')
-rw-r--r--man-pages-posix-2003/man1p/cd.1p355
1 files changed, 355 insertions, 0 deletions
diff --git a/man-pages-posix-2003/man1p/cd.1p b/man-pages-posix-2003/man1p/cd.1p
new file mode 100644
index 0000000..36322c1
--- /dev/null
+++ b/man-pages-posix-2003/man1p/cd.1p
@@ -0,0 +1,355 @@
+.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
+.TH "CD" 1P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
+.\" cd
+.SH PROLOG
+This manual page is part of the POSIX Programmer's Manual.
+The Linux implementation of this interface may differ (consult
+the corresponding Linux manual page for details of Linux behavior),
+or the interface may not be implemented on Linux.
+.SH NAME
+cd \- change the working directory
+.SH SYNOPSIS
+.LP
+\fBcd\fP \fB[\fP\fB-L | -P\fP\fB] [\fP\fIdirectory\fP\fB]\fP\fB
+.br
+.sp
+cd -
+.br
+\fP
+.SH DESCRIPTION
+.LP
+The \fIcd\fP utility shall change the working directory of the current
+shell execution environment (see \fIShell Execution Environment\fP
+) by executing the following steps in sequence. (In the
+following steps, the symbol \fBcurpath\fP represents an intermediate
+value used to simplify the description of the algorithm used
+by \fIcd\fP. There is no requirement that \fBcurpath\fP be made visible
+to the application.)
+.IP " 1." 4
+If no \fIdirectory\fP operand is given and the \fIHOME\fP environment
+variable is empty or undefined, the default behavior is
+implementation-defined and no further steps shall be taken.
+.LP
+.IP " 2." 4
+If no \fIdirectory\fP operand is given and the \fIHOME\fP environment
+variable is set to a non-empty value, the \fIcd\fP
+utility shall behave as if the directory named in the \fIHOME\fP environment
+variable was specified as the \fIdirectory\fP
+operand.
+.LP
+.IP " 3." 4
+If the \fIdirectory\fP operand begins with a slash character, set
+\fBcurpath\fP to the operand and proceed to step 7.
+.LP
+.IP " 4." 4
+If the first component of the \fIdirectory\fP operand is dot or dot-dot,
+proceed to step 6.
+.LP
+.IP " 5." 4
+Starting with the first pathname in the colon-separated pathnames
+of \fICDPATH\fP (see the ENVIRONMENT VARIABLES section) if
+the pathname is non-null, test if the concatenation of that pathname,
+a slash character, and the \fIdirectory\fP operand names a
+directory. If the pathname is null, test if the concatenation of dot,
+a slash character, and the operand names a directory. In
+either case, if the resulting string names an existing directory,
+set \fBcurpath\fP to that string and proceed to step 7.
+Otherwise, repeat this step with the next pathname in \fICDPATH\fP
+until all pathnames have been tested.
+.LP
+.IP " 6." 4
+Set \fBcurpath\fP to the string formed by the concatenation of the
+value of \fIPWD\fP, a slash character, and the
+operand.
+.LP
+.IP " 7." 4
+If the \fB-P\fP option is in effect, the \fIcd\fP utility shall perform
+actions equivalent to the \fIchdir\fP() function, called with \fBcurpath\fP
+as the \fIpath\fP argument. If these actions
+succeed, the \fIPWD\fP environment variable shall be set to an absolute
+pathname for the current working directory and shall not
+contain filename components that, in the context of pathname resolution,
+refer to a file of type symbolic link. If there is
+insufficient permission on the new directory, or on any parent of
+that directory, to determine the current working directory, the
+value of the \fIPWD\fP environment variable is unspecified. If the
+actions equivalent to \fIchdir\fP() fail for any reason, the \fIcd\fP
+utility shall display an appropriate error message
+and not alter the \fIPWD\fP environment variable. Whether the actions
+equivalent to \fIchdir\fP() succeed or fail, no further steps shall
+be taken.
+.LP
+.IP " 8." 4
+The \fBcurpath\fP value shall then be converted to canonical form
+as follows, considering each component from beginning to end,
+in sequence:
+.RS
+.IP " a." 4
+Dot components and any slashes that separate them from the next component
+shall be deleted.
+.LP
+.IP " b." 4
+For each dot-dot component, if there is a preceding component and
+it is neither root nor dot-dot, the preceding component, all
+slashes separating the preceding component from dot-dot, dot-dot and
+all slashes separating dot-dot from the following component
+shall be deleted.
+.LP
+.IP " c." 4
+An implementation may further simplify \fBcurpath\fP by removing any
+trailing slash characters that are not also leading
+slashes, replacing multiple non-leading consecutive slashes with a
+single slash, and replacing three or more leading slashes with a
+single slash. If, as a result of this canonicalization, the \fBcurpath\fP
+variable is null, no further steps shall be taken.
+.LP
+.RE
+.LP
+.IP " 9." 4
+The \fIcd\fP utility shall then perform actions equivalent to the
+\fIchdir\fP() function
+called with \fBcurpath\fP as the \fIpath\fP argument. If these actions
+failed for any reason, the \fIcd\fP utility shall display
+an appropriate error message and no further steps shall be taken.
+The \fIPWD\fP environment variable shall be set to
+\fBcurpath\fP.
+.LP
+.LP
+If, during the execution of the above steps, the \fIPWD\fP environment
+variable is changed, the \fIOLDPWD\fP environment
+variable shall also be changed to the value of the old working directory
+(that is the current working directory immediately prior
+to the call to \fIcd\fP).
+.SH OPTIONS
+.LP
+The \fIcd\fP utility shall conform to the Base Definitions volume
+of IEEE\ Std\ 1003.1-2001, Section 12.2, Utility Syntax Guidelines.
+.LP
+The following options shall be supported by the implementation:
+.TP 7
+\fB-L\fP
+Handle the operand dot-dot logically; symbolic link components shall
+not be resolved before dot-dot components are processed
+(see steps 8. and 9. in the DESCRIPTION).
+.TP 7
+\fB-P\fP
+Handle the operand dot-dot physically; symbolic link components shall
+be resolved before dot-dot components are processed (see
+step 7. in the DESCRIPTION).
+.sp
+.LP
+If both \fB-L\fP and \fB-P\fP options are specified, the last of these
+options shall be used and all others ignored. If
+neither \fB-L\fP nor \fB-P\fP is specified, the operand shall be handled
+dot-dot logically; see the DESCRIPTION.
+.SH OPERANDS
+.LP
+The following operands shall be supported:
+.TP 7
+\fIdirectory\fP
+An absolute or relative pathname of the directory that shall become
+the new working directory. The interpretation of a relative
+pathname by \fIcd\fP depends on the \fB-L\fP option and the \fICDPATH\fP
+and \fIPWD\fP environment variables. If
+\fIdirectory\fP is an empty string, the results are unspecified.
+.TP 7
+-
+When a hyphen is used as the operand, this shall be equivalent to
+the command:
+.sp
+.RS
+.nf
+
+\fBcd "$OLDPWD" && pwd
+\fP
+.fi
+.RE
+.LP
+which changes to the previous working directory and then writes its
+name.
+.sp
+.SH STDIN
+.LP
+Not used.
+.SH INPUT FILES
+.LP
+None.
+.SH ENVIRONMENT VARIABLES
+.LP
+The following environment variables shall affect the execution of
+\fIcd\fP:
+.TP 7
+\fICDPATH\fP
+A colon-separated list of pathnames that refer to directories. The
+\fIcd\fP utility shall use this list in its attempt to
+change the directory, as described in the DESCRIPTION. An empty string
+in place of a directory pathname represents the current
+directory. If \fICDPATH\fP is not set, it shall be treated as if it
+were an empty string.
+.TP 7
+\fIHOME\fP
+The name of the directory, used when no \fIdirectory\fP operand is
+specified.
+.TP 7
+\fILANG\fP
+Provide a default value for the internationalization variables that
+are unset or null. (See the Base Definitions volume of
+IEEE\ Std\ 1003.1-2001, Section 8.2, Internationalization Variables
+for
+the precedence of internationalization variables used to determine
+the values of locale categories.)
+.TP 7
+\fILC_ALL\fP
+If set to a non-empty string value, override the values of all the
+other internationalization variables.
+.TP 7
+\fILC_CTYPE\fP
+Determine the locale for the interpretation of sequences of bytes
+of text data as characters (for example, single-byte as
+opposed to multi-byte characters in arguments).
+.TP 7
+\fILC_MESSAGES\fP
+Determine the locale that should be used to affect the format and
+contents of diagnostic messages written to standard
+error.
+.TP 7
+\fINLSPATH\fP
+Determine the location of message catalogs for the processing of \fILC_MESSAGES
+\&.\fP
+.TP 7
+\fIOLDPWD\fP
+A pathname of the previous working directory, used by \fIcd\fP \fB-\fP.
+.TP 7
+\fIPWD\fP
+This variable shall be set as specified in the DESCRIPTION. If an
+application sets or unsets the value of \fIPWD\fP, the
+behavior of \fIcd\fP is unspecified.
+.sp
+.SH ASYNCHRONOUS EVENTS
+.LP
+Default.
+.SH STDOUT
+.LP
+If a non-empty directory name from \fICDPATH\fP is used, or if \fIcd\fP
+\fB-\fP is used, an absolute pathname of the new
+working directory shall be written to the standard output as follows:
+.sp
+.RS
+.nf
+
+\fB"%s\\n", <\fP\fInew directory\fP\fB>
+\fP
+.fi
+.RE
+.LP
+Otherwise, there shall be no output.
+.SH STDERR
+.LP
+The standard error shall be used only for diagnostic messages.
+.SH OUTPUT FILES
+.LP
+None.
+.SH EXTENDED DESCRIPTION
+.LP
+None.
+.SH EXIT STATUS
+.LP
+The following exit values shall be returned:
+.TP 7
+\ 0
+The directory was successfully changed.
+.TP 7
+>0
+An error occurred.
+.sp
+.SH CONSEQUENCES OF ERRORS
+.LP
+The working directory shall remain unchanged.
+.LP
+\fIThe following sections are informative.\fP
+.SH APPLICATION USAGE
+.LP
+Since \fIcd\fP affects the current shell execution environment, it
+is always provided as a shell regular built-in. If it is
+called in a subshell or separate utility execution environment, such
+as one of the following:
+.sp
+.RS
+.nf
+
+\fB(cd /tmp)
+nohup cd
+find . -exec cd {} \\;
+\fP
+.fi
+.RE
+.LP
+it does not affect the working directory of the caller's environment.
+.LP
+The user must have execute (search) permission in \fIdirectory\fP
+in order to change to it.
+.SH EXAMPLES
+.LP
+None.
+.SH RATIONALE
+.LP
+The use of the \fICDPATH\fP was introduced in the System V shell.
+Its use is analogous to the use of the \fIPATH\fP variable
+in the shell. The BSD C shell used a shell parameter \fIcdpath\fP
+for this purpose.
+.LP
+A common extension when \fIHOME\fP is undefined is to get the login
+directory from the user database for the invoking user.
+This does not occur on System V implementations.
+.LP
+Some historical shells, such as the KornShell, took special actions
+when the directory name contained a dot-dot component,
+selecting the logical parent of the directory, rather than the actual
+parent directory; that is, it moved up one level toward the
+\fB'/'\fP in the pathname, remembering what the user typed, rather
+than performing the equivalent of:
+.sp
+.RS
+.nf
+
+\fBchdir("..");
+\fP
+.fi
+.RE
+.LP
+In such a shell, the following commands would not necessarily produce
+equivalent output for all directories:
+.sp
+.RS
+.nf
+
+\fBcd .. && ls ls ..
+\fP
+.fi
+.RE
+.LP
+This behavior is now the default. It is not consistent with the definition
+of dot-dot in most historical practice; that is,
+while this behavior has been optionally available in the KornShell,
+other shells have historically not supported this
+functionality. The logical pathname is stored in the \fIPWD\fP environment
+variable when the \fIcd\fP utility completes and this
+value is used to construct the next directory name if \fIcd\fP is
+invoked with the \fB-L\fP option.
+.SH FUTURE DIRECTIONS
+.LP
+None.
+.SH SEE ALSO
+.LP
+\fIShell Execution Environment\fP, \fIpwd\fP, the System
+Interfaces volume of IEEE\ Std\ 1003.1-2001, \fIchdir\fP()
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group. In the
+event of any discrepancy between this version and the original IEEE and
+The Open Group Standard, the original IEEE and The Open Group Standard
+is the referee document. The original Standard can be obtained online at
+http://www.opengroup.org/unix/online.html .