Computes a pathname relative to the current path.
lispworks
current-pathname &optional relative-pathname type => pathname
|   relative-pathname⇩  |    
A pathname designator.  | 
|   type⇩  |    
A string or  nil. | 
|   pathname⇩  |    
A pathname.  | 
The function current-pathname is useful for loading other files relative to a file.
current-pathname computes a pathname from the current operation as follows:
|   When loading a file  |    Uses *load-pathname*.  | 
|   When compiling a file  |    Uses *compile-file-pathname*.  | 
|   When evaluating or compiling an Editor buffer  | |
|   Uses the pathname of the buffer, if available, otherwise uses the current working directory.  | |
|   Otherwise  |    Uses the current working directory.  | 
The pathname computed above is then translated to a physical pathname, and the argument relative-pathname is merged with this physical pathname. The pathname-type of the result pathname is set to type if supplied, the pathname-version is set to :newest, and pathname is returned.
A useful value for type is nil, which can be used to allow load to choose between lisp or fasl regardless of the type of the current pathname.
defsystem uses current-pathname with its :default-host argument.
Suppose you want the file foo to load the file bar.
While loading the source file foo.lisp:
(current-pathname "bar") => #P"C:/temp/bar.lisp"
While loading the binary file foo.ofasl:
(current-pathname "bar") => #P"C:/temp/bar.ofasl"
To load bar.lisp or bar.ofasl according to the value of *load-fasl-or-lisp-file*, regardless of whether foo.lisp or foo.ofasl is being loaded, specify type nil:
(load (current-pathname "bar" nil))
LispWorks® User Guide and Reference Manual - 01 Dec 2021 19:30:41