#!/usr/bin/env bash # Copy this file to your non integrated *nix-like environment, # Cygwin/MSys2/Git for Windows SDK, installs '/etc/profile.d/' # folder to integrate the externally installed Unix like environment # into Cmder so it has access to settings stored in Cmder/config # folder when launched. # # The destination file extension depends on the shell you use. For example: # # bash - Copy to /etc/profile.d/cmder_exinit.sh # zsh - Copy to /etc/profile.d/cmder_exinit.zsh # Add portable user customizations ${CMDER_ROOT}/config/user-profile.sh or # add whole config scripts to ${CMDER_ROOT}/config/profile.d both will be sourced # from this file and be applied to the environment at startup. # # 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. # # Uncomment and edit the CMDER_ROOT line to use Cmder/config even when launched # # from outside Cmder. # CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder. # Source all .sh or .zsh scripts in a given directory based on shell type # Args: $1 - directory path containing shell scripts to source run_profile_d() { local profile_d_scripts pushd "${1}" >/dev/null || return if [ -n "${ZSH_VERSION}" ]; then # shellcheck disable=SC2035 profile_d_scripts=$(ls *.zsh 2>/dev/null) elif [ -n "${BASH_VERSION}" ]; then # shellcheck disable=SC2035 profile_d_scripts=$(ls *.sh 2>/dev/null) fi 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 } # Check that we haven't already been sourced [[ -z ${CMDER_EXINIT} ]] && CMDER_EXINIT="1" || 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" ] && [ -n "$ConEmuDir" ]; then if [ -d "${ConEmuDir}../../vendor" ]; then case "$ConEmuDir" in *\\*) CMDER_ROOT=$( cd "$(cygpath -u "$ConEmuDir")/../.." && pwd );; esac else echo "Running in ConEmu without Cmder, skipping Cmder integration." fi elif [ -n "$CMDER_ROOT" ]; then case "$CMDER_ROOT" in *\\*) CMDER_ROOT="$(cygpath -u "$CMDER_ROOT")";; esac fi if [ -n "$CMDER_ROOT" ]; then # Remove any trailing '/' from CMDER_ROOT CMDER_ROOT="${CMDER_ROOT%/}" echo "Using CMDER_ROOT at \"${CMDER_ROOT}\"." export CMDER_ROOT # 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 shell 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 # shellcheck disable=SC1091 . "${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 fi