Use a dedicated configuration directory path for all-users profiles on non-windows systems. #25748
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Summary
PowerShell should search in a dedicated directory (other than the installation directory) for the all-users profile to adhere to the Filesystem Hierarchy Standard (FHS).
PR Context
Currently the all-users profiles are stored in the installation directory. Unix-based systems and derivatives mostly follow recommendations of the FHS. The FHS recommends to place configuration files into the
/etc
directory.For example, here are the locations of the system wide configuration files of other popular shells:
/etc/bash.bashrc
(Debian/Ubuntu) or/etc/bashrc
(RedHat/Fedora)/etc/zshrc
/etc/fish/config.fish
I took inspiration from where NuGet is locating its system-wide configuration, see NuGet config file locations:
This commit introduces the environment variable
POWERSHELL_COMMON_APPLICATION_DATA
.If this variable is neither null nor empty, then this location is used. This allows distros that do not follow the FHS to customize the location.
/Library/Application Support/PowerShell
directory./etc/opt/powershell
.This change is also needed to make the all-users profile usable when installing powershell via a snap, see canonical/powershell-snaps#14
Fixes: #20336, #25007
PR Checklist
.h
,.cpp
,.cs
,.ps1
and.psm1
files have the correct copyright header