Initial Commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# ==============================================================================
|
||||
# /etc/profile.d/pyenv.sh
|
||||
# Global Pyenv Configuration for Multi-User Enterprise Environment
|
||||
# ==============================================================================
|
||||
|
||||
# Add the globally compiled Pyenv core binaries to the system PATH
|
||||
export PATH="/opt/pyenv/bin:$PATH"
|
||||
|
||||
# Isolate the Pyenv execution root to the current user's HOME directory
|
||||
# This ensures that 'pyenv rehash' and shim generation have native write permissions
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
|
||||
# Bootstrap required directory structure inside the user's HOME if missing
|
||||
if [ ! -d "$PYENV_ROOT/versions" ]; then
|
||||
mkdir -p "$PYENV_ROOT/versions" "$PYENV_ROOT/shims"
|
||||
fi
|
||||
|
||||
# Define the hook path required by Pyenv architecture plugins
|
||||
export PYENV_HOOK_PATH="/opt/pyenv/hooks"
|
||||
|
||||
# SELF-HEALING: Detect and forcefully purge broken/orphaned symbolic links
|
||||
# This prevents shell errors if an administrator uninstalls a global Python version
|
||||
find "$PYENV_ROOT/versions/" -xtype l -delete 2>/dev/null
|
||||
|
||||
# SYNCHRONIZATION: Map globally available Python installations into the user's scope
|
||||
# Individual symlinks are used so the user's Pyenv can correctly resolve each version
|
||||
find /opt/pyenv/versions/ -type d -name '[23]*' | \
|
||||
while read path; do
|
||||
version=$(basename $path);
|
||||
mkdir -p "$PYENV_ROOT/versions/$version/envs" 2>/dev/null
|
||||
if [ -d "$PYENV_ROOT/versions/$version" ]; then
|
||||
ln -snf /opt/pyenv/versions/$version/* \
|
||||
"$PYENV_ROOT/versions/$version/" 2>/dev/null;
|
||||
fi
|
||||
done
|
||||
|
||||
# INITIALIZATION: Spawn the Pyenv environment and virtualenv managers
|
||||
# into the shell session
|
||||
eval "$(pyenv init -)"
|
||||
eval "$(pyenv virtualenv-init -)"
|
||||
Reference in New Issue
Block a user