When configuring an application, you can often use
/dev/null as config file if you want the application to read an empty file. But, if the application reads a list of files from a directory, you cannot use this trick. You would need to give it an empty directory to read.
I was wondering: does Linux have a default empty directory that can be used for such purposes? I know OpenSSH used /var/empty for a while, and I can of course create an empty dir myself, but maybe the FHS has specified a standard directory for this?
The FHS provides no “standard” empty directory.
It is common for Linux systems to provide a directory
/var/empty, but this directory is not defined in FHS and may not actually be empty. Instead, certain daemons will create their own empty directories in here. For instance, openssh uses the empty directory
/var/empty/sshd for privilege separation.
If your need for an empty directory is transient, you can create an empty directory yourself, as a subdirectory of
/tmp. If you’re doing this outside the program, you can use
mktemp -d for this, or use the
mkdtemp(3) C function inside your program. Though if you always need the empty directory to be present, consider creating one under
/var/empty as openssh does.
For this use case, creating a directory under
/tmp is probably the best fit, though in practice it doesn’t matter very much where you put it.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.