Optimize and fix cmder.sh and cmder_exinit scripts

Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-11-09 01:26:47 +00:00
parent 00636cf013
commit e99dc4d7e6
2 changed files with 122 additions and 80 deletions

101
vendor/cmder.sh vendored
View File

@@ -7,90 +7,115 @@
# Add system specific users customizations to $HOME/.bashrc, these # Add system specific users customizations to $HOME/.bashrc, these
# customizations will not follow Cmder to another machine. # customizations will not follow Cmder to another machine.
function runProfiled { # Source all .sh scripts in a given directory
unset profile_d_scripts # Args: $1 - directory path containing .sh scripts to source
pushd "${1}" >/dev/null run_profile_d() {
local profile_d_scripts
pushd "${1}" >/dev/null || return
profile_d_scripts=$(ls *.sh 2>/dev/null) profile_d_scripts=$(ls *.sh 2>/dev/null)
if [ ! "x${profile_d_scripts}" = "x" ] ; then if [ -n "${profile_d_scripts}" ]; then
for x in ${profile_d_scripts} ; do for script in ${profile_d_scripts}; do
# echo Sourcing "${1}/${x}"... # echo Sourcing "${1}/${script}"...
. "${1}/${x}" . "${1}/${script}"
done done
fi fi
popd >/dev/null popd >/dev/null || return
} }
# We do this for bash as admin sessions since $CMDER_ROOT is not being set # Detect and set CMDER_ROOT for bash admin sessions
if [ "$CMDER_ROOT" == "" ] ; then # Converts Windows paths to Unix paths if needed
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac if [ -z "$CMDER_ROOT" ]; then
case "$ConEmuDir" in
*\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." && pwd );;
esac
else else
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac case "$CMDER_ROOT" in
*\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";;
esac
fi fi
# Remove any trailing '/' # Remove any trailing '/' from CMDER_ROOT
CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::') 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."
return 2>/dev/null || exit 0
fi
export CMDER_ROOT export CMDER_ROOT
if [ -f "/c/Program Files/Git/cmd/git.exe" ] ; then # Detect Git installation location
if [ -f "/c/Program Files/Git/cmd/git.exe" ]; then
GIT_INSTALL_ROOT="/c/Program Files/Git" GIT_INSTALL_ROOT="/c/Program Files/Git"
elif [ -f "/c/Program Files(x86)/Git/cmd/git.exe" ] ; then elif [ -f "/c/Program Files(x86)/Git/cmd/git.exe" ]; then
GIT_INSTALL_ROOT="/c/Program Files(x86)/Git" GIT_INSTALL_ROOT="/c/Program Files(x86)/Git"
elif [ -f "${CMDER_ROOT}/vendor/git-for-windows/cmd/git.exe" ] ; then elif [ -f "${CMDER_ROOT}/vendor/git-for-windows/cmd/git.exe" ]; then
GIT_INSTALL_ROOT=${CMDER_ROOT}/vendor/git-for-windows GIT_INSTALL_ROOT="${CMDER_ROOT}/vendor/git-for-windows"
fi fi
if [[ ! "$PATH" =~ "${GIT_INSTALL_ROOT}/bin:" ]] ; then # 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" PATH="${GIT_INSTALL_ROOT}/bin:$PATH"
fi fi
# Add Cmder directories to PATH
PATH="${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}" PATH="${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}"
export PATH export PATH
# Drop *.sh or *.zsh files into "${CMDER_ROOT}\config\profile.d" # Create profile.d directory if it doesn't exist
# to source them at startup. if [ ! -d "${CMDER_ROOT}/config/profile.d" ]; then
if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
mkdir -p "${CMDER_ROOT}/config/profile.d" mkdir -p "${CMDER_ROOT}/config/profile.d"
fi fi
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then # Source all .sh scripts in profile.d directories
runProfiled "${CMDER_ROOT}/config/profile.d" if [ -d "${CMDER_ROOT}/config/profile.d" ]; then
run_profile_d "${CMDER_ROOT}/config/profile.d"
fi fi
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then if [ -d "${CMDER_USER_CONFIG}/profile.d" ]; then
runProfiled "${CMDER_USER_CONFIG}/profile.d" run_profile_d "${CMDER_USER_CONFIG}/profile.d"
fi fi
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. # Rename legacy user-profile.sh to user_profile.sh for consistency
if [ -f "$CMDER_ROOT/config/user-profile.sh" ] ; then if [ -f "$CMDER_ROOT/config/user-profile.sh" ]; then
mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh" mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh"
fi fi
CmderUserProfilePath="${CMDER_ROOT}/config/user_profile.sh" # Source user profile from CMDER_ROOT config
if [ -f "${CMDER_ROOT}/config/user_profile.sh" ] ; then if [ -f "${CMDER_ROOT}/config/user_profile.sh" ]; then
. "${CMDER_ROOT}/config/user_profile.sh" . "${CMDER_ROOT}/config/user_profile.sh"
fi fi
if [ "${CMDER_USER_CONFIG}" != "" ] ; then # Handle CMDER_USER_CONFIG if set
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. if [ -n "${CMDER_USER_CONFIG}" ]; then
if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ] ; 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" mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
fi fi
export PATH="${CMDER_USER_CONFIG}/bin:$PATH" export PATH="${CMDER_USER_CONFIG}/bin:$PATH"
CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh" # Source user profile from CMDER_USER_CONFIG
if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ]; then
. "${CMDER_USER_CONFIG}/user_profile.sh" . "${CMDER_USER_CONFIG}/user_profile.sh"
fi fi
fi fi
if [ ! -f "${CmderUserProfilePath}" ] ; then # Determine the user profile path for creation if needed
echo Creating user startup file: "${CmderUserProfilePath}" if [ -n "${CMDER_USER_CONFIG}" ]; then
cp "${CMDER_ROOT}/vendor/user_profile.sh.default" "${CmderUserProfilePath}" 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 fi
# Source the users .bashrc file if it exists # Source the users .bashrc file if it exists

101
vendor/cmder_exinit vendored
View File

@@ -22,92 +22,109 @@
# # from outside Cmder. # # from outside Cmder.
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder. # CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
function runProfiled { # Source all .sh or .zsh scripts in a given directory based on shell type
unset profile_d_scripts # Args: $1 - directory path containing shell scripts to source
pushd "${1}" >/dev/null run_profile_d() {
local profile_d_scripts
pushd "${1}" >/dev/null || return
if [ ! "x${ZSH_VERSION}" = "x" ]; then if [ -n "${ZSH_VERSION}" ]; then
profile_d_scripts=$(ls *.zsh 2>/dev/null) profile_d_scripts=$(ls *.zsh 2>/dev/null)
elif [ ! "x${BASH_VERSION}" = "x" ]; then elif [ -n "${BASH_VERSION}" ]; then
profile_d_scripts=$(ls *.sh 2>/dev/null) profile_d_scripts=$(ls *.sh 2>/dev/null)
fi fi
if [ ! "x${profile_d_scripts}" = "x" ] ; then if [ -n "${profile_d_scripts}" ]; then
for x in ${profile_d_scripts} ; do for script in ${profile_d_scripts}; do
echo Sourcing "${1}/${x}"... echo "Sourcing ${1}/${script}..."
. "${1}/${x}" . "${1}/${script}"
done done
fi fi
popd >/dev/null popd >/dev/null || return
} }
# Check that we haven't already been sourced. # Check that we haven't already been sourced
[[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || return [[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || return
# We do this for bash as admin sessions since $CMDER_ROOT is not being set # Detect and set CMDER_ROOT for bash admin sessions
if [ "$CMDER_ROOT" = "" -a "$ConEmuDir" != "" ] ; then # Converts Windows paths to Unix paths if needed
if [ -d "${ConEmuDir}../../vendor" ] ; then if [ -z "$CMDER_ROOT" ] && [ -n "$ConEmuDir" ]; then
case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." ; pwd );; esac if [ -d "${ConEmuDir}../../vendor" ]; then
case "$ConEmuDir" in
*\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." && pwd );;
esac
else else
echo "Running in ConEmu without Cmder, skipping Cmder integration." echo "Running in ConEmu without Cmder, skipping Cmder integration."
fi fi
elif [ "$CMDER_ROOT" != "" ] ; then elif [ -n "$CMDER_ROOT" ]; then
case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac case "$CMDER_ROOT" in
*\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";;
esac
fi fi
if [ ! "$CMDER_ROOT" = "" ] ; then if [ -n "$CMDER_ROOT" ]; then
# Remove any trailing '/' # Remove any trailing '/' from CMDER_ROOT
CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::') CMDER_ROOT="${CMDER_ROOT%/}"
echo "Using \"CMDER_ROOT\" at \"${CMDER_ROOT}\"." echo "Using CMDER_ROOT at \"${CMDER_ROOT}\"."
export CMDER_ROOT export CMDER_ROOT
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT} # Add Cmder directories to PATH
PATH="${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}"
export PATH export PATH
# Drop *.sh or *.zsh files into "${CMDER_ROOT}\config\profile.d" # Create profile.d directory if it doesn't exist
# to source them at startup. if [ ! -d "${CMDER_ROOT}/config/profile.d" ]; then
if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
mkdir -p "${CMDER_ROOT}/config/profile.d" mkdir -p "${CMDER_ROOT}/config/profile.d"
fi fi
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then # Source all shell scripts in profile.d directories
runProfiled "${CMDER_ROOT}/config/profile.d" if [ -d "${CMDER_ROOT}/config/profile.d" ]; then
run_profile_d "${CMDER_ROOT}/config/profile.d"
fi fi
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then if [ -d "${CMDER_USER_CONFIG}/profile.d" ]; then
runProfiled "${CMDER_USER_CONFIG}/profile.d" run_profile_d "${CMDER_USER_CONFIG}/profile.d"
fi fi
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. # Rename legacy user-profile.sh to user_profile.sh for consistency
if [ -f "$CMDER_ROOT/config/user-profile.sh" ] ; then if [ -f "$CMDER_ROOT/config/user-profile.sh" ]; then
mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh" mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh"
fi fi
CmderUserProfilePath="${CMDER_ROOT}/config/user_profile.sh" # Source user profile from CMDER_ROOT config
if [ -f "${CMDER_ROOT}/config/user_profile.sh" ] ; then if [ -f "${CMDER_ROOT}/config/user_profile.sh" ]; then
. "${CMDER_ROOT}/config/user_profile.sh" . "${CMDER_ROOT}/config/user_profile.sh"
fi fi
if [ "${CMDER_USER_CONFIG}" != "" ] ; then # Handle CMDER_USER_CONFIG if set
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency. if [ -n "${CMDER_USER_CONFIG}" ]; then
if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ] ; 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" mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
fi fi
export PATH=${CMDER_USER_CONFIG}/bin:$PATH export PATH="${CMDER_USER_CONFIG}/bin:$PATH"
CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh" # Source user profile from CMDER_USER_CONFIG
if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ]; then
. "${CMDER_USER_CONFIG}/user_profile.sh" . "${CMDER_USER_CONFIG}/user_profile.sh"
fi fi
fi fi
if [ ! -f "${CmderUserProfilePath}" ] ; then # Determine the user profile path for creation if needed
echo Creating user startup file: "${CmderUserProfilePath}" if [ -n "${CMDER_USER_CONFIG}" ]; then
cp "${CMDER_ROOT}/vendor/user_profile.sh.default" "${CmderUserProfilePath}" 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 fi
fi fi