Skip to content

findOneExecutable file-list path-list

findOneExecutable searches for an executable from file-list in directories identified by path-list, finding the first matching executable in the first matching directory (each directory is searched for matching executables in turn). The result will be the executable file concatenated with the matching path. If an executable from file-list cannot be found in path-list, findOneExecutable returns an empty string.

findOneExecutable is provided as an alternative to lookPath so that you can interrogate the system PATH as it would be configured after chezmoi apply. Like lookPath, findOneExecutable is not hermetic: its return value depends on the state of the filesystem at the moment the template is executed. Exercise caution when using it in your templates.

The return value of the first successful call to findOneExecutable is cached, and future calls to findOneExecutable with the same parameters will return this path.

Info

On Windows, the resulting path will contain the first found executable extension as identified by the environment variable %PathExt%.

Example

{{ if findOneExecutable (list "eza" "exa") (list "bin" "go/bin" ".cargo/bin" ".local/bin") }}
# $HOME/.cargo/bin/exa exists and will probably be in $PATH after apply
{{ end }}