# System/Directory Paths

## Directory Foreigns

```1!:43 y      Query Current Working Directory
1!:44 y      Set Current Working Directory```

## Folder Tables

JFE defines BINPATH_z_ as the full path to the J bin folder that contains JFE, JE, and profile.ijs.

profile.ijs, before it boots up the rest of the standard library, defines SystemFolders_j_ as a 2-column table of folder names and paths.

UserFolders_j_ is a similar table defined from the user's configuration script `config.ijs`. As much as possible it should be defined relative to the names in SystemFolders_j_. UserFolder names should start with an upper-case letter.

## Directory Verbs

The profile defines the following verbs in the `z` locale:

```jpath       converts argument to a full path name
jcwdpath    return path in current working directory```

These verbs are used to provide the full pathname for files, and to ensure that the path separator is correct for the host operating system.

## jpath

Verb `jpath` references the folder tables. It converts strings with folder names preceded with `~`, for example `~Mywork`. The folder name is read up to the first path separator or the end, for example:

```  jpath '~temp'
c:\j901-user\temp

jpath '~temp\t2.ijs'
c:\j901-user\temp\t2.ijs

jpath '~JPB\classes\board\init.ijs'
d:\jss\jpb\source\classes\board\init.ijs```

Where the folder name is preceded with `~.`, for example `~.Mywork`, this refers to the corresponding parent directory, for example:

```  jpath '~.JPB\dev\regtest.ijs'
d:\jss\jpb\dev\regtest.ijs

jpath '~..JPB\release\pbr.ijs'
d:\jss\release\pbr.ijs```

Verbs `load`, `require` and `script` call `jpath`, and so recognize `~path` names, e.g.

```  load '~JPB/classes/board/init.ijs'
require '~user/projects/run/run.ijs'```