Is there official documentation on directories like ~/.config and ~/.cache?What does the period (.) mean at the start of a filename in a terminal command?Files in /home deletedCache Memory and fglrx driver slows computerIs there a difference between SWAP and Cache memory?Moving Configuration Directories and Files to a Sub-directory of Home DirectoryPurpose of '~/.cache' directory and when is it safe to delete?Downloading and playing audio from cacheMerge Chromium and Chrome cache dirsIs there a config file that controls the microphone?Copy firefox/thunderbird config directories from Ubuntu 12.04 to Xubuntu 16.04Are there special functionalities to Ubuntu default directories in home?
Mathematically modelling RC circuit with a linear input
Explain why a line can never intersect a plane in exactly two points.
Why don't we have a weaning party like Avraham did?
What are the pros and cons for the two possible "gear directions" when parking the car on a hill?
What is the "ls" directory in my home directory?
Should I include an appendix for inessential, yet related worldbuilding to my story?
Dates on degrees don’t make sense – will people care?
How did Gollum enter Moria?
Draw a symmetric alien head
How long did the SR-71 take to get to cruising altitude?
How could empty set be unique if it could be vacuously false
I just entered the USA without passport control at Atlanta airport
Why don't countries like Japan just print more money?
Is the continuity test limit resistance of a multimeter standard?
Print one file per line using echo
What is the highest voltage from the power supply a Raspberry Pi 3 B can handle without getting damaged?
Intuition for the role of diffeomorphisms
Subtract the Folded Matrix
Explicit song lyrics checker
"Correct me if I'm wrong"
Why is it easier to balance a non-moving bike standing up than sitting down?
Boss wants someone else to lead a project based on the idea I presented to him
How do I professionally let my manager know I'll quit over an issue?
Why isn't my calculation that we should be able to see the sun well beyond the observable universe valid?
Is there official documentation on directories like ~/.config and ~/.cache?
What does the period (.) mean at the start of a filename in a terminal command?Files in /home deletedCache Memory and fglrx driver slows computerIs there a difference between SWAP and Cache memory?Moving Configuration Directories and Files to a Sub-directory of Home DirectoryPurpose of '~/.cache' directory and when is it safe to delete?Downloading and playing audio from cacheMerge Chromium and Chrome cache dirsIs there a config file that controls the microphone?Copy firefox/thunderbird config directories from Ubuntu 12.04 to Xubuntu 16.04Are there special functionalities to Ubuntu default directories in home?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I've see these directories being used by many applications and am now considering using them for my app. How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
I've been Googling and searching for something official from Ubuntu but to no avail, maybe someone else knows the proper search terms or location of this documentation. Is this something I should just accept as an un-stated standard practice location?
configuration home-directory cache
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
|
show 2 more comments
I've see these directories being used by many applications and am now considering using them for my app. How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
I've been Googling and searching for something official from Ubuntu but to no avail, maybe someone else knows the proper search terms or location of this documentation. Is this something I should just accept as an un-stated standard practice location?
configuration home-directory cache
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
"maybe someone else knows the proper search terms": I'm not sure of official documentation for their use but these are considered dotfiles, more specifically dotfolders in those examples. They are hidden by default and are commonly used for saving user preferences (~/.config) and other "support" files like cache (~/.cache).
– Nmath
11 hours ago
@Nmath They're not "hidden" really. It's just a "traditional" Unix design ( or oopsie ) wherels
would ignore dot files and other applications sort of adopted it, but they're in no way hidden, and shouldn't be used as security feature in any way. Rob Pike, one of the Unix wizzards, has also clarified that originally the purpose was to hide.
and..
directories from the output, but that was implemented in a wrong fashion. Read about it here: askubuntu.com/a/1073810/295286
– Sergiy Kolodyazhnyy
11 hours ago
1
"official from Ubuntu" wrong place. It is defined by the freedesktop organization so -desktop- dependent. Not just Ubuntu. Oh and these are GUIDELINES.
– Rinzwind
11 hours ago
@SergiyKolodyazhnyy it is interesting to discuss the history of how dotfiles came to be, but in practice dotfiles/dotfolders are hidden (not visible) by default by file managers and bash commands likedir
. In that way, yes they are absolutely "hidden". Hiding files this way serves a good purpose to prevent them from being accidentally altered/deleted by end user -- that's why they are still used so ubiquitously. I agree that dotfiles should not be used for security, in the sense that they are not impossible to find/read/alter.
– Nmath
9 hours ago
@Nmath Well, even accidental deletion can happen with these. Consider thefind
command or Python for example - these don't ignore dotfiles by default. I agree that it may be convenient to remove them from listing to the end-user, but that's about it.
– Sergiy Kolodyazhnyy
9 hours ago
|
show 2 more comments
I've see these directories being used by many applications and am now considering using them for my app. How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
I've been Googling and searching for something official from Ubuntu but to no avail, maybe someone else knows the proper search terms or location of this documentation. Is this something I should just accept as an un-stated standard practice location?
configuration home-directory cache
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I've see these directories being used by many applications and am now considering using them for my app. How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
I've been Googling and searching for something official from Ubuntu but to no avail, maybe someone else knows the proper search terms or location of this documentation. Is this something I should just accept as an un-stated standard practice location?
configuration home-directory cache
configuration home-directory cache
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 11 hours ago


Danny ADanny A
334
334
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Danny A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
"maybe someone else knows the proper search terms": I'm not sure of official documentation for their use but these are considered dotfiles, more specifically dotfolders in those examples. They are hidden by default and are commonly used for saving user preferences (~/.config) and other "support" files like cache (~/.cache).
– Nmath
11 hours ago
@Nmath They're not "hidden" really. It's just a "traditional" Unix design ( or oopsie ) wherels
would ignore dot files and other applications sort of adopted it, but they're in no way hidden, and shouldn't be used as security feature in any way. Rob Pike, one of the Unix wizzards, has also clarified that originally the purpose was to hide.
and..
directories from the output, but that was implemented in a wrong fashion. Read about it here: askubuntu.com/a/1073810/295286
– Sergiy Kolodyazhnyy
11 hours ago
1
"official from Ubuntu" wrong place. It is defined by the freedesktop organization so -desktop- dependent. Not just Ubuntu. Oh and these are GUIDELINES.
– Rinzwind
11 hours ago
@SergiyKolodyazhnyy it is interesting to discuss the history of how dotfiles came to be, but in practice dotfiles/dotfolders are hidden (not visible) by default by file managers and bash commands likedir
. In that way, yes they are absolutely "hidden". Hiding files this way serves a good purpose to prevent them from being accidentally altered/deleted by end user -- that's why they are still used so ubiquitously. I agree that dotfiles should not be used for security, in the sense that they are not impossible to find/read/alter.
– Nmath
9 hours ago
@Nmath Well, even accidental deletion can happen with these. Consider thefind
command or Python for example - these don't ignore dotfiles by default. I agree that it may be convenient to remove them from listing to the end-user, but that's about it.
– Sergiy Kolodyazhnyy
9 hours ago
|
show 2 more comments
"maybe someone else knows the proper search terms": I'm not sure of official documentation for their use but these are considered dotfiles, more specifically dotfolders in those examples. They are hidden by default and are commonly used for saving user preferences (~/.config) and other "support" files like cache (~/.cache).
– Nmath
11 hours ago
@Nmath They're not "hidden" really. It's just a "traditional" Unix design ( or oopsie ) wherels
would ignore dot files and other applications sort of adopted it, but they're in no way hidden, and shouldn't be used as security feature in any way. Rob Pike, one of the Unix wizzards, has also clarified that originally the purpose was to hide.
and..
directories from the output, but that was implemented in a wrong fashion. Read about it here: askubuntu.com/a/1073810/295286
– Sergiy Kolodyazhnyy
11 hours ago
1
"official from Ubuntu" wrong place. It is defined by the freedesktop organization so -desktop- dependent. Not just Ubuntu. Oh and these are GUIDELINES.
– Rinzwind
11 hours ago
@SergiyKolodyazhnyy it is interesting to discuss the history of how dotfiles came to be, but in practice dotfiles/dotfolders are hidden (not visible) by default by file managers and bash commands likedir
. In that way, yes they are absolutely "hidden". Hiding files this way serves a good purpose to prevent them from being accidentally altered/deleted by end user -- that's why they are still used so ubiquitously. I agree that dotfiles should not be used for security, in the sense that they are not impossible to find/read/alter.
– Nmath
9 hours ago
@Nmath Well, even accidental deletion can happen with these. Consider thefind
command or Python for example - these don't ignore dotfiles by default. I agree that it may be convenient to remove them from listing to the end-user, but that's about it.
– Sergiy Kolodyazhnyy
9 hours ago
"maybe someone else knows the proper search terms": I'm not sure of official documentation for their use but these are considered dotfiles, more specifically dotfolders in those examples. They are hidden by default and are commonly used for saving user preferences (~/.config) and other "support" files like cache (~/.cache).
– Nmath
11 hours ago
"maybe someone else knows the proper search terms": I'm not sure of official documentation for their use but these are considered dotfiles, more specifically dotfolders in those examples. They are hidden by default and are commonly used for saving user preferences (~/.config) and other "support" files like cache (~/.cache).
– Nmath
11 hours ago
@Nmath They're not "hidden" really. It's just a "traditional" Unix design ( or oopsie ) where
ls
would ignore dot files and other applications sort of adopted it, but they're in no way hidden, and shouldn't be used as security feature in any way. Rob Pike, one of the Unix wizzards, has also clarified that originally the purpose was to hide .
and ..
directories from the output, but that was implemented in a wrong fashion. Read about it here: askubuntu.com/a/1073810/295286– Sergiy Kolodyazhnyy
11 hours ago
@Nmath They're not "hidden" really. It's just a "traditional" Unix design ( or oopsie ) where
ls
would ignore dot files and other applications sort of adopted it, but they're in no way hidden, and shouldn't be used as security feature in any way. Rob Pike, one of the Unix wizzards, has also clarified that originally the purpose was to hide .
and ..
directories from the output, but that was implemented in a wrong fashion. Read about it here: askubuntu.com/a/1073810/295286– Sergiy Kolodyazhnyy
11 hours ago
1
1
"official from Ubuntu" wrong place. It is defined by the freedesktop organization so -desktop- dependent. Not just Ubuntu. Oh and these are GUIDELINES.
– Rinzwind
11 hours ago
"official from Ubuntu" wrong place. It is defined by the freedesktop organization so -desktop- dependent. Not just Ubuntu. Oh and these are GUIDELINES.
– Rinzwind
11 hours ago
@SergiyKolodyazhnyy it is interesting to discuss the history of how dotfiles came to be, but in practice dotfiles/dotfolders are hidden (not visible) by default by file managers and bash commands like
dir
. In that way, yes they are absolutely "hidden". Hiding files this way serves a good purpose to prevent them from being accidentally altered/deleted by end user -- that's why they are still used so ubiquitously. I agree that dotfiles should not be used for security, in the sense that they are not impossible to find/read/alter.– Nmath
9 hours ago
@SergiyKolodyazhnyy it is interesting to discuss the history of how dotfiles came to be, but in practice dotfiles/dotfolders are hidden (not visible) by default by file managers and bash commands like
dir
. In that way, yes they are absolutely "hidden". Hiding files this way serves a good purpose to prevent them from being accidentally altered/deleted by end user -- that's why they are still used so ubiquitously. I agree that dotfiles should not be used for security, in the sense that they are not impossible to find/read/alter.– Nmath
9 hours ago
@Nmath Well, even accidental deletion can happen with these. Consider the
find
command or Python for example - these don't ignore dotfiles by default. I agree that it may be convenient to remove them from listing to the end-user, but that's about it.– Sergiy Kolodyazhnyy
9 hours ago
@Nmath Well, even accidental deletion can happen with these. Consider the
find
command or Python for example - these don't ignore dotfiles by default. I agree that it may be convenient to remove them from listing to the end-user, but that's about it.– Sergiy Kolodyazhnyy
9 hours ago
|
show 2 more comments
1 Answer
1
active
oldest
votes
Yes, there is a standard: these are specified by freedesktop.org and are part of XDG Base Directory Specifications.
config-spec outlines just basic requirements, but the details are in the Base Directory Specifications. The ~/.config
and ~/.cache
directories are default unless configured otherwise:
There is a set of preference ordered base directories relative to which configuration files should be searched. This set of directories is defined by the environment variable $XDG_CONFIG_DIRS.
There is a single base directory relative to which user-specific non-essential (cached) data should be written. This directory is defined by the environment variable $XDG_CACHE_HOME.
...
$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.
...
$XDG_CACHE_HOME defines the base directory relative to which user specific non-essential data files should be stored. If $XDG_CACHE_HOME is either not set or empty, a default equal to $HOME/.cache should be used.
You may notice these specifications mostly state where data should be stored, which environment variables used, and in what manner ( desktop-neutral, efficient, etc ), but most desktops are free in implementing the "how" part of it. The GNOME-based desktops will use gsettings
where as KDE users can use the same via kwriteconfig
, but they both will rely on ~/.config
directory in the process
Question key points
How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
These directories appear in official documentation and Filesystem Hierarchy Standard also mentions them. This is official documentation, hence the folders are officially supported.
Is this something I should just accept as an un-stated standard practice location?
Depends on the app you're creating. Is the app supposed to be configurable on per-user basis or work consistently through out the system ? FHS tells us that for system-wide stuff we should use /etc
or /usr/local
, but XDG directories should be used for user-specific configurations - ~/.cache
and ~/.config
. Of course, if application isn't dependent on user-specific settings, /var/cache can be used instead of per-user directory. Of course, you could always have single ~/.appname.conf
file, a ~/.appname.db
or ~/.appname/
directory to keep configurations and cache there, but that would be non-standard; not "bad" - just non-standard.
See also
- Why do some applications use ~/.config/appname for their config data while others use ~/.appname?
- Understanding home configuration file locations: ~/, ~/.config/ and ~/.local/share/
- How did the ~/.local/bin thing start? How widespread is it?
ehm did you post this before me? or during? >:)
– Rinzwind
11 hours ago
@Rinzwind Right before your answer :) Look at the time line askubuntu.com/posts/1151791/timeline
– Sergiy Kolodyazhnyy
10 hours ago
Ill let you have this one :=)
– Rinzwind
10 hours ago
Ah awesome, I should have dug deeper, thanks for the information.
– Danny A
10 hours ago
Which part of POSIX talks about directory usage?
– chepner
2 hours ago
|
show 1 more comment
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "89"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Danny A is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1151791%2fis-there-official-documentation-on-directories-like-config-and-cache%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Yes, there is a standard: these are specified by freedesktop.org and are part of XDG Base Directory Specifications.
config-spec outlines just basic requirements, but the details are in the Base Directory Specifications. The ~/.config
and ~/.cache
directories are default unless configured otherwise:
There is a set of preference ordered base directories relative to which configuration files should be searched. This set of directories is defined by the environment variable $XDG_CONFIG_DIRS.
There is a single base directory relative to which user-specific non-essential (cached) data should be written. This directory is defined by the environment variable $XDG_CACHE_HOME.
...
$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.
...
$XDG_CACHE_HOME defines the base directory relative to which user specific non-essential data files should be stored. If $XDG_CACHE_HOME is either not set or empty, a default equal to $HOME/.cache should be used.
You may notice these specifications mostly state where data should be stored, which environment variables used, and in what manner ( desktop-neutral, efficient, etc ), but most desktops are free in implementing the "how" part of it. The GNOME-based desktops will use gsettings
where as KDE users can use the same via kwriteconfig
, but they both will rely on ~/.config
directory in the process
Question key points
How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
These directories appear in official documentation and Filesystem Hierarchy Standard also mentions them. This is official documentation, hence the folders are officially supported.
Is this something I should just accept as an un-stated standard practice location?
Depends on the app you're creating. Is the app supposed to be configurable on per-user basis or work consistently through out the system ? FHS tells us that for system-wide stuff we should use /etc
or /usr/local
, but XDG directories should be used for user-specific configurations - ~/.cache
and ~/.config
. Of course, if application isn't dependent on user-specific settings, /var/cache can be used instead of per-user directory. Of course, you could always have single ~/.appname.conf
file, a ~/.appname.db
or ~/.appname/
directory to keep configurations and cache there, but that would be non-standard; not "bad" - just non-standard.
See also
- Why do some applications use ~/.config/appname for their config data while others use ~/.appname?
- Understanding home configuration file locations: ~/, ~/.config/ and ~/.local/share/
- How did the ~/.local/bin thing start? How widespread is it?
ehm did you post this before me? or during? >:)
– Rinzwind
11 hours ago
@Rinzwind Right before your answer :) Look at the time line askubuntu.com/posts/1151791/timeline
– Sergiy Kolodyazhnyy
10 hours ago
Ill let you have this one :=)
– Rinzwind
10 hours ago
Ah awesome, I should have dug deeper, thanks for the information.
– Danny A
10 hours ago
Which part of POSIX talks about directory usage?
– chepner
2 hours ago
|
show 1 more comment
Yes, there is a standard: these are specified by freedesktop.org and are part of XDG Base Directory Specifications.
config-spec outlines just basic requirements, but the details are in the Base Directory Specifications. The ~/.config
and ~/.cache
directories are default unless configured otherwise:
There is a set of preference ordered base directories relative to which configuration files should be searched. This set of directories is defined by the environment variable $XDG_CONFIG_DIRS.
There is a single base directory relative to which user-specific non-essential (cached) data should be written. This directory is defined by the environment variable $XDG_CACHE_HOME.
...
$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.
...
$XDG_CACHE_HOME defines the base directory relative to which user specific non-essential data files should be stored. If $XDG_CACHE_HOME is either not set or empty, a default equal to $HOME/.cache should be used.
You may notice these specifications mostly state where data should be stored, which environment variables used, and in what manner ( desktop-neutral, efficient, etc ), but most desktops are free in implementing the "how" part of it. The GNOME-based desktops will use gsettings
where as KDE users can use the same via kwriteconfig
, but they both will rely on ~/.config
directory in the process
Question key points
How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
These directories appear in official documentation and Filesystem Hierarchy Standard also mentions them. This is official documentation, hence the folders are officially supported.
Is this something I should just accept as an un-stated standard practice location?
Depends on the app you're creating. Is the app supposed to be configurable on per-user basis or work consistently through out the system ? FHS tells us that for system-wide stuff we should use /etc
or /usr/local
, but XDG directories should be used for user-specific configurations - ~/.cache
and ~/.config
. Of course, if application isn't dependent on user-specific settings, /var/cache can be used instead of per-user directory. Of course, you could always have single ~/.appname.conf
file, a ~/.appname.db
or ~/.appname/
directory to keep configurations and cache there, but that would be non-standard; not "bad" - just non-standard.
See also
- Why do some applications use ~/.config/appname for their config data while others use ~/.appname?
- Understanding home configuration file locations: ~/, ~/.config/ and ~/.local/share/
- How did the ~/.local/bin thing start? How widespread is it?
ehm did you post this before me? or during? >:)
– Rinzwind
11 hours ago
@Rinzwind Right before your answer :) Look at the time line askubuntu.com/posts/1151791/timeline
– Sergiy Kolodyazhnyy
10 hours ago
Ill let you have this one :=)
– Rinzwind
10 hours ago
Ah awesome, I should have dug deeper, thanks for the information.
– Danny A
10 hours ago
Which part of POSIX talks about directory usage?
– chepner
2 hours ago
|
show 1 more comment
Yes, there is a standard: these are specified by freedesktop.org and are part of XDG Base Directory Specifications.
config-spec outlines just basic requirements, but the details are in the Base Directory Specifications. The ~/.config
and ~/.cache
directories are default unless configured otherwise:
There is a set of preference ordered base directories relative to which configuration files should be searched. This set of directories is defined by the environment variable $XDG_CONFIG_DIRS.
There is a single base directory relative to which user-specific non-essential (cached) data should be written. This directory is defined by the environment variable $XDG_CACHE_HOME.
...
$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.
...
$XDG_CACHE_HOME defines the base directory relative to which user specific non-essential data files should be stored. If $XDG_CACHE_HOME is either not set or empty, a default equal to $HOME/.cache should be used.
You may notice these specifications mostly state where data should be stored, which environment variables used, and in what manner ( desktop-neutral, efficient, etc ), but most desktops are free in implementing the "how" part of it. The GNOME-based desktops will use gsettings
where as KDE users can use the same via kwriteconfig
, but they both will rely on ~/.config
directory in the process
Question key points
How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
These directories appear in official documentation and Filesystem Hierarchy Standard also mentions them. This is official documentation, hence the folders are officially supported.
Is this something I should just accept as an un-stated standard practice location?
Depends on the app you're creating. Is the app supposed to be configurable on per-user basis or work consistently through out the system ? FHS tells us that for system-wide stuff we should use /etc
or /usr/local
, but XDG directories should be used for user-specific configurations - ~/.cache
and ~/.config
. Of course, if application isn't dependent on user-specific settings, /var/cache can be used instead of per-user directory. Of course, you could always have single ~/.appname.conf
file, a ~/.appname.db
or ~/.appname/
directory to keep configurations and cache there, but that would be non-standard; not "bad" - just non-standard.
See also
- Why do some applications use ~/.config/appname for their config data while others use ~/.appname?
- Understanding home configuration file locations: ~/, ~/.config/ and ~/.local/share/
- How did the ~/.local/bin thing start? How widespread is it?
Yes, there is a standard: these are specified by freedesktop.org and are part of XDG Base Directory Specifications.
config-spec outlines just basic requirements, but the details are in the Base Directory Specifications. The ~/.config
and ~/.cache
directories are default unless configured otherwise:
There is a set of preference ordered base directories relative to which configuration files should be searched. This set of directories is defined by the environment variable $XDG_CONFIG_DIRS.
There is a single base directory relative to which user-specific non-essential (cached) data should be written. This directory is defined by the environment variable $XDG_CACHE_HOME.
...
$XDG_CONFIG_HOME defines the base directory relative to which user specific configuration files should be stored. If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used.
...
$XDG_CACHE_HOME defines the base directory relative to which user specific non-essential data files should be stored. If $XDG_CACHE_HOME is either not set or empty, a default equal to $HOME/.cache should be used.
You may notice these specifications mostly state where data should be stored, which environment variables used, and in what manner ( desktop-neutral, efficient, etc ), but most desktops are free in implementing the "how" part of it. The GNOME-based desktops will use gsettings
where as KDE users can use the same via kwriteconfig
, but they both will rely on ~/.config
directory in the process
Question key points
How do I know this is an officially supported folder and not just a flavor of the month location for a per-user cache/config?
These directories appear in official documentation and Filesystem Hierarchy Standard also mentions them. This is official documentation, hence the folders are officially supported.
Is this something I should just accept as an un-stated standard practice location?
Depends on the app you're creating. Is the app supposed to be configurable on per-user basis or work consistently through out the system ? FHS tells us that for system-wide stuff we should use /etc
or /usr/local
, but XDG directories should be used for user-specific configurations - ~/.cache
and ~/.config
. Of course, if application isn't dependent on user-specific settings, /var/cache can be used instead of per-user directory. Of course, you could always have single ~/.appname.conf
file, a ~/.appname.db
or ~/.appname/
directory to keep configurations and cache there, but that would be non-standard; not "bad" - just non-standard.
See also
- Why do some applications use ~/.config/appname for their config data while others use ~/.appname?
- Understanding home configuration file locations: ~/, ~/.config/ and ~/.local/share/
- How did the ~/.local/bin thing start? How widespread is it?
edited 28 mins ago
answered 11 hours ago


Sergiy KolodyazhnyySergiy Kolodyazhnyy
76.8k10161338
76.8k10161338
ehm did you post this before me? or during? >:)
– Rinzwind
11 hours ago
@Rinzwind Right before your answer :) Look at the time line askubuntu.com/posts/1151791/timeline
– Sergiy Kolodyazhnyy
10 hours ago
Ill let you have this one :=)
– Rinzwind
10 hours ago
Ah awesome, I should have dug deeper, thanks for the information.
– Danny A
10 hours ago
Which part of POSIX talks about directory usage?
– chepner
2 hours ago
|
show 1 more comment
ehm did you post this before me? or during? >:)
– Rinzwind
11 hours ago
@Rinzwind Right before your answer :) Look at the time line askubuntu.com/posts/1151791/timeline
– Sergiy Kolodyazhnyy
10 hours ago
Ill let you have this one :=)
– Rinzwind
10 hours ago
Ah awesome, I should have dug deeper, thanks for the information.
– Danny A
10 hours ago
Which part of POSIX talks about directory usage?
– chepner
2 hours ago
ehm did you post this before me? or during? >:)
– Rinzwind
11 hours ago
ehm did you post this before me? or during? >:)
– Rinzwind
11 hours ago
@Rinzwind Right before your answer :) Look at the time line askubuntu.com/posts/1151791/timeline
– Sergiy Kolodyazhnyy
10 hours ago
@Rinzwind Right before your answer :) Look at the time line askubuntu.com/posts/1151791/timeline
– Sergiy Kolodyazhnyy
10 hours ago
Ill let you have this one :=)
– Rinzwind
10 hours ago
Ill let you have this one :=)
– Rinzwind
10 hours ago
Ah awesome, I should have dug deeper, thanks for the information.
– Danny A
10 hours ago
Ah awesome, I should have dug deeper, thanks for the information.
– Danny A
10 hours ago
Which part of POSIX talks about directory usage?
– chepner
2 hours ago
Which part of POSIX talks about directory usage?
– chepner
2 hours ago
|
show 1 more comment
Danny A is a new contributor. Be nice, and check out our Code of Conduct.
Danny A is a new contributor. Be nice, and check out our Code of Conduct.
Danny A is a new contributor. Be nice, and check out our Code of Conduct.
Danny A is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Ask Ubuntu!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1151791%2fis-there-official-documentation-on-directories-like-config-and-cache%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
"maybe someone else knows the proper search terms": I'm not sure of official documentation for their use but these are considered dotfiles, more specifically dotfolders in those examples. They are hidden by default and are commonly used for saving user preferences (~/.config) and other "support" files like cache (~/.cache).
– Nmath
11 hours ago
@Nmath They're not "hidden" really. It's just a "traditional" Unix design ( or oopsie ) where
ls
would ignore dot files and other applications sort of adopted it, but they're in no way hidden, and shouldn't be used as security feature in any way. Rob Pike, one of the Unix wizzards, has also clarified that originally the purpose was to hide.
and..
directories from the output, but that was implemented in a wrong fashion. Read about it here: askubuntu.com/a/1073810/295286– Sergiy Kolodyazhnyy
11 hours ago
1
"official from Ubuntu" wrong place. It is defined by the freedesktop organization so -desktop- dependent. Not just Ubuntu. Oh and these are GUIDELINES.
– Rinzwind
11 hours ago
@SergiyKolodyazhnyy it is interesting to discuss the history of how dotfiles came to be, but in practice dotfiles/dotfolders are hidden (not visible) by default by file managers and bash commands like
dir
. In that way, yes they are absolutely "hidden". Hiding files this way serves a good purpose to prevent them from being accidentally altered/deleted by end user -- that's why they are still used so ubiquitously. I agree that dotfiles should not be used for security, in the sense that they are not impossible to find/read/alter.– Nmath
9 hours ago
@Nmath Well, even accidental deletion can happen with these. Consider the
find
command or Python for example - these don't ignore dotfiles by default. I agree that it may be convenient to remove them from listing to the end-user, but that's about it.– Sergiy Kolodyazhnyy
9 hours ago