fix: non-writable global user profile #14 #17
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.
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).
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; otherwise PowerShell uses/etc/opt/powershell
.Fixes: #14
I am currently working on upstreaming a similar patch, see PowerShell/PowerShell#25748
Note
This PR is based on PR #15. It needs to merge first. For easier readability of the diff I set the merge target to #15. Reset this to main once #15 is merged.