Question: I want to be able to translate a certain directory in my homedirectory on any OS to the actual absolute path on that OS e.g. `(make-pathname :directory '(:absolute :home "directoryiwant")` should be translated to "/home/weirdusername/directoryiwant" on a unixlike system.

What would be the function of choice to do that? As

```
(directory-namestring 
      (make-pathname :directory '(:absolute :home "directoryiwant"))
> "~/"

```

does not actually do the deal.

Answer: 
If you need something relative to your home directory, the Common Lisp functions [**user-homedir-pathname**](http://www.lispworks.com/documentation/lw61/CLHS/Body/f_user_h.htm) and [**merge-pathnames**](http://www.lispworks.com/documentation/HyperSpec/Body/f_merge_.htm) can help you:

```
CL-USER> (merge-pathnames 
          (make-pathname
           :directory '(:relative "directoryyouwant"))
          (user-homedir-pathname))
#P"/home/username/directoryyouwant/"

```

The [**namestring** functions](http://clhs.lisp.se/Body/f_namest.htm) (e.g., **namestring**, **directory-namestring**) work on this pathname as expected:

```
CL-USER> (directory-namestring
          (merge-pathnames 
           (make-pathname
            :directory '(:relative "directoryyouwant"))
           (user-homedir-pathname)))
"/home/username/directoryyouwant/"

```
```
CL-USER > (make-pathname :directory (append (pathname-directory
                                              (user-homedir-pathname))
                                            (list "directoryiwant"))
                         :defaults (user-homedir-pathname))

#P"/Users/joswig/directoryiwant/"

```

The function `NAMESTRING` returns it as a string.

```
CL-USER > (namestring #P"/Users/joswig/directoryiwant/")
"/Users/joswig/directoryiwant/"

```