---
name: "pathchk"
section: "1"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/pathchk"
---

# pathchk(1)

check pathnames

## NAME

**pathchk** – check pathnames

## SYNOPSIS

**pathchk** \[**-pP**\] *pathname* *...*

## DESCRIPTION

The **pathchk** utility checks whether each of the specified *pathname* arguments is valid or portable.

A diagnostic message is written for each argument that:

- Is longer than PATH\_MAX bytes.

- Contains any component longer than NAME\_MAX bytes. (The value of NAME\_MAX depends on the underlying file system.)

- Contains a directory component that is not searchable.

It is not considered an error if a *pathname* argument contains a nonexistent component as long as a component by that name could be created.

The options are as follows:

- **-p**

  Perform portability checks on the specified *pathname* arguments. Diagnostic messages will be written for each argument that:

  - Is longer than \_POSIX\_PATH\_MAX (255) bytes.

  - Contains a component longer than \_POSIX\_NAME\_MAX (14) bytes.

  - Contains any character not in the portable filename character set (that is, alphanumeric characters, ‘.’, ‘-’ and ‘\_’). No component may start with the hyphen (‘-’) character.

- **-P**

  In addition to the default or **-p** checks, write a diagnostic for each argument that:

  - Is empty.

  - Contains a component that starts with a hyphen.

## EXIT STATUS

The **pathchk** utility exits 0 on success, and \>0 if an error occurs.

## EXAMPLES

Check whether the names of files in the current directory are portable to other POSIX systems:

```
find . -exec pathchk -p -- {} +
```

## SEE ALSO

[getconf(1)](/getconf/1.md), [pathconf(2)](/pathconf/2.md), [stat(2)](/stat/2.md)

## STANDARDS

The **pathchk** utility conforms to IEEE Std 1003.1-2001 (“POSIX.1”).

## HISTORY

A **pathchk** utility appeared in FreeBSD 5.0.
