mirror of
https://github.com/cmderdev/cmder.git
synced 2025-11-09 13:49:05 +08:00
138 lines
4.3 KiB
Bash
138 lines
4.3 KiB
Bash
#!/usr/bin/env bash
|
|
# DO NOT EDIT THIS FILE IT WILL BE OVERWRITTEN ON UPDATE
|
|
#
|
|
# Add portable user customizations ${CMDER_ROOT}/config/user_profile.sh,
|
|
# these customizations will follow Cmder if $CMDER_ROOT is copied
|
|
# to another machine.
|
|
#
|
|
# Add system specific users customizations to $HOME/.bashrc, these
|
|
# customizations will not follow Cmder to another machine.
|
|
|
|
# Source all .sh scripts in a given directory
|
|
# Args: $1 - directory path containing .sh scripts to source
|
|
run_profile_d() {
|
|
local profile_d_scripts
|
|
pushd "${1}" >/dev/null || return
|
|
# shellcheck disable=SC2035
|
|
profile_d_scripts=$(ls *.sh 2>/dev/null)
|
|
|
|
if [ -n "${profile_d_scripts}" ]; then
|
|
for script in ${profile_d_scripts}; do
|
|
# echo Sourcing "${1}/${script}"...
|
|
# shellcheck disable=SC1090
|
|
. "${1}/${script}"
|
|
done
|
|
fi
|
|
popd >/dev/null || return
|
|
}
|
|
|
|
# Detect and set CMDER_ROOT for bash admin sessions
|
|
# Converts Windows paths to Unix paths if needed
|
|
# ConEmuDir is set by ConEmu/Cmder environment
|
|
if [ -z "$CMDER_ROOT" ]; then
|
|
# Try to get CMDER_ROOT from ConEmuDir
|
|
case "$ConEmuDir" in
|
|
*\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." && pwd );;
|
|
esac
|
|
|
|
# If still not set, derive from script location (vendor -> root)
|
|
if [ -z "$CMDER_ROOT" ]; then
|
|
CMDER_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )"
|
|
fi
|
|
else
|
|
case "$CMDER_ROOT" in
|
|
*\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";;
|
|
esac
|
|
fi
|
|
|
|
# Remove any trailing '/' from CMDER_ROOT
|
|
CMDER_ROOT="${CMDER_ROOT%/}"
|
|
|
|
# Exit early if CMDER_ROOT is not set
|
|
if [ -z "$CMDER_ROOT" ]; then
|
|
echo "Warning: CMDER_ROOT is not set. Cmder integration skipped."
|
|
# shellcheck disable=SC2317
|
|
return 2>/dev/null || exit 0
|
|
fi
|
|
|
|
export CMDER_ROOT
|
|
|
|
# Detect Git installation location
|
|
if [ -f "/c/Program Files/Git/cmd/git.exe" ]; then
|
|
GIT_INSTALL_ROOT="/c/Program Files/Git"
|
|
elif [ -f "/c/Program Files(x86)/Git/cmd/git.exe" ]; then
|
|
GIT_INSTALL_ROOT="/c/Program Files(x86)/Git"
|
|
elif [ -f "${CMDER_ROOT}/vendor/git-for-windows/cmd/git.exe" ]; then
|
|
GIT_INSTALL_ROOT="${CMDER_ROOT}/vendor/git-for-windows"
|
|
fi
|
|
|
|
# Add Git to PATH if not already present
|
|
if [[ -n "${GIT_INSTALL_ROOT}" && ! "$PATH" =~ ${GIT_INSTALL_ROOT}/bin: ]]; then
|
|
PATH="${GIT_INSTALL_ROOT}/bin:$PATH"
|
|
fi
|
|
|
|
# Add Cmder directories to PATH
|
|
PATH="${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}"
|
|
|
|
export PATH
|
|
|
|
# Create profile.d directory if it doesn't exist
|
|
if [ ! -d "${CMDER_ROOT}/config/profile.d" ]; then
|
|
mkdir -p "${CMDER_ROOT}/config/profile.d"
|
|
fi
|
|
|
|
# Source all .sh scripts in profile.d directories
|
|
if [ -d "${CMDER_ROOT}/config/profile.d" ]; then
|
|
run_profile_d "${CMDER_ROOT}/config/profile.d"
|
|
fi
|
|
|
|
if [ -d "${CMDER_USER_CONFIG}/profile.d" ]; then
|
|
run_profile_d "${CMDER_USER_CONFIG}/profile.d"
|
|
fi
|
|
|
|
|
|
# Rename legacy user-profile.sh to user_profile.sh for consistency
|
|
if [ -f "$CMDER_ROOT/config/user-profile.sh" ]; then
|
|
mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh"
|
|
fi
|
|
|
|
# Source user profile from CMDER_ROOT config
|
|
if [ -f "${CMDER_ROOT}/config/user_profile.sh" ]; then
|
|
. "${CMDER_ROOT}/config/user_profile.sh"
|
|
fi
|
|
|
|
# Handle CMDER_USER_CONFIG if set
|
|
if [ -n "${CMDER_USER_CONFIG}" ]; then
|
|
# Rename legacy user-profile.sh to user_profile.sh for consistency
|
|
if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ]; then
|
|
mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
|
|
fi
|
|
|
|
export PATH="${CMDER_USER_CONFIG}/bin:$PATH"
|
|
|
|
# Source user profile from CMDER_USER_CONFIG
|
|
if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ]; then
|
|
# shellcheck disable=SC1091
|
|
. "${CMDER_USER_CONFIG}/user_profile.sh"
|
|
fi
|
|
fi
|
|
|
|
# Determine the user profile path for creation if needed
|
|
if [ -n "${CMDER_USER_CONFIG}" ]; then
|
|
cmder_user_profile_path="${CMDER_USER_CONFIG}/user_profile.sh"
|
|
else
|
|
cmder_user_profile_path="${CMDER_ROOT}/config/user_profile.sh"
|
|
fi
|
|
|
|
# Create user profile from default template if it doesn't exist
|
|
if [ ! -f "${cmder_user_profile_path}" ] && [ -f "${CMDER_ROOT}/vendor/user_profile.sh.default" ]; then
|
|
echo "Creating user startup file: ${cmder_user_profile_path}"
|
|
cp "${CMDER_ROOT}/vendor/user_profile.sh.default" "${cmder_user_profile_path}"
|
|
fi
|
|
|
|
# Source the users .bashrc file if it exists
|
|
if [ -f "${HOME}/.bashrc" ]; then
|
|
# shellcheck disable=SC1091
|
|
. "${HOME}/.bashrc"
|
|
fi
|