40 lines
1.5 KiB
Plaintext
40 lines
1.5 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: dirname - Functions - Configuration Language
|
|
description: The dirname function removes the last portion from a filesystem path.
|
|
---
|
|
|
|
# `dirname` Function
|
|
|
|
`dirname` takes a string containing a filesystem path and removes the last
|
|
portion from it.
|
|
|
|
This function works only with the path string and does not access the
|
|
filesystem itself. It is therefore unable to take into account filesystem
|
|
features such as symlinks.
|
|
|
|
If the path is empty then the result is `"."`, representing the job file directory.
|
|
|
|
The behavior of this function depends on the host platform. On Windows systems,
|
|
it uses backslash `\` as the path segment separator. On Unix systems, the slash
|
|
`/` is used. The result of this function is normalized, so on a Windows system
|
|
any slashes in the given path will be replaced by backslashes before returning.
|
|
|
|
Referring directly to filesystem paths in job arguments may cause
|
|
spurious diffs if the same configuration is applied from multiple systems or on
|
|
different host operating systems. We recommend using filesystem paths only
|
|
for transient values, such as the argument to [`file`](/docs/job-specification/hcl2/functions/file/file) (where
|
|
only the contents are then stored).
|
|
|
|
## Examples
|
|
|
|
```shell-session
|
|
> dirname("foo/bar/baz.txt")
|
|
foo/bar
|
|
```
|
|
|
|
## Related Functions
|
|
|
|
- [`basename`](/docs/job-specification/hcl2/functions/file/basename) returns _only_ the last portion of a filesystem
|
|
path, discarding the portion that would be returned by `dirname`.
|