2016-03-07 05:40:06 +08:00
|
|
|
@echo off
|
|
|
|
|
2018-11-11 21:04:35 +08:00
|
|
|
set CMDER_INIT_START=%time%
|
2018-11-02 21:00:41 +08:00
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Init Script for cmd.exe shell
|
2013-09-29 02:38:52 +08:00
|
|
|
:: Created as part of cmder project
|
|
|
|
|
2015-08-26 01:44:23 +08:00
|
|
|
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
2018-09-01 06:02:56 +08:00
|
|
|
:: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands
|
2015-08-26 01:44:23 +08:00
|
|
|
|
2018-03-13 23:38:27 +08:00
|
|
|
:: Use /v command line arg or set to > 0 for verbose output to aid in debugging.
|
2020-06-08 02:49:02 +08:00
|
|
|
if not defined verbose_output set verbose_output=0
|
|
|
|
|
|
|
|
:: Use /d command line arg or set to 1 for debug output to aid in debugging.
|
|
|
|
if not defined debug_output set debug_output=0
|
|
|
|
|
|
|
|
:: Use /t command line arg or set to 1 to display init time.
|
|
|
|
if not defined time_init set time_init=0
|
|
|
|
|
|
|
|
:: Use /f command line arg to speed up init at the expense of some functionality.
|
|
|
|
if not defined fast_init set fast_init=0
|
|
|
|
|
|
|
|
:: Use /max_depth 1-5 to set max recurse depth for calls to `enhance_path_recursive`
|
|
|
|
if not defined max_depth set max_depth=1
|
|
|
|
|
2022-10-19 05:03:10 +08:00
|
|
|
:: Add *nix tools to end of path. 0 turns off *nix tools, 2 adds *nix tools to the front of the path.
|
2020-06-08 02:49:02 +08:00
|
|
|
if not defined nix_tools set nix_tools=1
|
2020-06-08 03:32:15 +08:00
|
|
|
|
2018-08-06 13:09:59 +08:00
|
|
|
set "CMDER_USER_FLAGS= "
|
2016-05-08 03:20:24 +08:00
|
|
|
|
2014-03-13 23:48:50 +08:00
|
|
|
:: Find root dir
|
2016-03-07 05:40:06 +08:00
|
|
|
if not defined CMDER_ROOT (
|
2017-06-23 17:48:03 +08:00
|
|
|
if defined ConEmuDir (
|
2018-03-13 23:38:27 +08:00
|
|
|
for /f "delims=" %%i in ("%ConEmuDir%\..\..") do (
|
|
|
|
set "CMDER_ROOT=%%~fi"
|
|
|
|
)
|
2017-06-23 17:48:03 +08:00
|
|
|
) else (
|
2018-03-13 23:38:27 +08:00
|
|
|
for /f "delims=" %%i in ("%~dp0\..") do (
|
|
|
|
set "CMDER_ROOT=%%~fi"
|
|
|
|
)
|
2017-06-23 17:48:03 +08:00
|
|
|
)
|
2014-03-13 23:48:50 +08:00
|
|
|
)
|
|
|
|
|
2018-03-13 23:38:27 +08:00
|
|
|
:: Remove trailing '\' from %CMDER_ROOT%
|
2016-05-06 04:29:58 +08:00
|
|
|
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
Added/enhanced bash with cmder.sh/user-cmder.sh, organized tasks menu
added personal files to .gitignore so they never get uploaded to the repo and added support for msys2 bash in the new git for windows
added autocreate of config/user-cmder.sh if iot does not exist and added it to the .gitignore
Added tasks: cmd::Cmder, cmd::Cmder as Admin, bash::bash, bash::bash as Admin, bash::mintty, bash::mintty as admin, powershell::powershell, powershell::powershell as Admin. Set default task to cmd::Cmder. Cot rid of init.bat running before /bin/bash, fixes double exit requirement
Added running git for windows post-install.bat on first cmder launch
fixed file/path not found errors when launching powershell as admin
fixed file/path not found errors when launching bash/mintty as admin
fixed PATH in vendor/cmder.sh
Added sourcing ~/.bashrc if it exists.
changed .gitignore to ignore anything with path of config/user-*
removed my personal files from .gitignore, left in config/user-*
Make sure $CMDER_ROOT does not have a trailing '/'
%CMDER_ROOT% does not have trailing '\'. allow user to specify a conemu.xml on the command line
Removed '\' from %CMDER_ROOT%
2015-11-09 11:25:42 +08:00
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Include Cmder libraries
|
2018-09-16 02:55:54 +08:00
|
|
|
call "%cmder_root%\vendor\bin\cexec.cmd" /setpath
|
2018-03-23 22:20:07 +08:00
|
|
|
call "%cmder_root%\vendor\lib\lib_base"
|
|
|
|
call "%cmder_root%\vendor\lib\lib_path"
|
|
|
|
call "%cmder_root%\vendor\lib\lib_console"
|
|
|
|
call "%cmder_root%\vendor\lib\lib_git"
|
|
|
|
call "%cmder_root%\vendor\lib\lib_profile"
|
|
|
|
|
2018-03-13 23:38:27 +08:00
|
|
|
:var_loop
|
|
|
|
if "%~1" == "" (
|
|
|
|
goto :start
|
2018-11-04 08:36:51 +08:00
|
|
|
) else if /i "%1" == "/f" (
|
|
|
|
set fast_init=1
|
|
|
|
) else if /i "%1" == "/t" (
|
2018-11-02 21:00:41 +08:00
|
|
|
set time_init=1
|
2022-10-18 19:50:35 +08:00
|
|
|
) else if /i "%1" == "/v" (
|
2018-09-02 11:08:00 +08:00
|
|
|
set verbose_output=1
|
2022-10-18 19:50:35 +08:00
|
|
|
) else if /i "%1" == "/d" (
|
2019-03-18 03:09:02 +08:00
|
|
|
set debug_output=1
|
2018-04-04 01:20:49 +08:00
|
|
|
) else if /i "%1" == "/max_depth" (
|
2018-03-13 23:38:27 +08:00
|
|
|
if "%~2" geq "1" if "%~2" leq "5" (
|
|
|
|
set "max_depth=%~2"
|
|
|
|
shift
|
|
|
|
) else (
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_error% "'/max_depth' requires a number between 1 and 5!"
|
2018-03-13 23:38:27 +08:00
|
|
|
exit /b
|
|
|
|
)
|
2018-04-04 01:20:49 +08:00
|
|
|
) else if /i "%1" == "/c" (
|
2018-03-13 23:38:27 +08:00
|
|
|
if exist "%~2" (
|
|
|
|
if not exist "%~2\bin" mkdir "%~2\bin"
|
|
|
|
set "cmder_user_bin=%~2\bin"
|
|
|
|
if not exist "%~2\config\profile.d" mkdir "%~2\config\profile.d"
|
|
|
|
set "cmder_user_config=%~2\config"
|
|
|
|
shift
|
|
|
|
)
|
2018-04-04 01:20:49 +08:00
|
|
|
) else if /i "%1" == "/user_aliases" (
|
2018-03-13 23:38:27 +08:00
|
|
|
if exist "%~2" (
|
2018-09-02 06:17:09 +08:00
|
|
|
set "user_aliases=%~2"
|
2018-03-13 23:38:27 +08:00
|
|
|
shift
|
|
|
|
)
|
2018-04-04 01:20:49 +08:00
|
|
|
) else if /i "%1" == "/git_install_root" (
|
2018-09-03 19:08:44 +08:00
|
|
|
if exist "%~2" (
|
2018-03-13 23:38:27 +08:00
|
|
|
set "GIT_INSTALL_ROOT=%~2"
|
|
|
|
shift
|
|
|
|
) else (
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_error% "The Git install root folder "%~2", you specified does not exist!"
|
2018-03-13 23:38:27 +08:00
|
|
|
exit /b
|
|
|
|
)
|
2022-10-18 19:50:35 +08:00
|
|
|
) else if /i "%1" == "/nix_tools" (
|
2018-12-03 23:30:54 +08:00
|
|
|
if "%2" equ "0" (
|
|
|
|
REM Do not add *nix tools to path
|
|
|
|
set nix_tools=0
|
|
|
|
shift
|
|
|
|
) else if "%2" equ "1" (
|
|
|
|
REM Add *nix tools to end of path
|
|
|
|
set nix_tools=1
|
|
|
|
shift
|
2018-12-14 09:54:18 +08:00
|
|
|
) else if "%2" equ "2" (
|
|
|
|
REM Add *nix tools to front of path
|
|
|
|
set nix_tools=2
|
|
|
|
shift
|
2018-12-03 23:30:54 +08:00
|
|
|
)
|
2018-04-04 01:20:49 +08:00
|
|
|
) else if /i "%1" == "/home" (
|
2018-03-13 23:38:27 +08:00
|
|
|
if exist "%~2" (
|
|
|
|
set "HOME=%~2"
|
|
|
|
shift
|
|
|
|
) else (
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_error% The home folder "%2", you specified does not exist!
|
2018-03-13 23:38:27 +08:00
|
|
|
exit /b
|
|
|
|
)
|
2018-04-04 01:20:49 +08:00
|
|
|
) else if /i "%1" == "/svn_ssh" (
|
2018-03-13 23:38:27 +08:00
|
|
|
set SVN_SSH=%2
|
|
|
|
shift
|
2018-05-01 20:57:02 +08:00
|
|
|
) else (
|
2022-10-18 19:50:35 +08:00
|
|
|
set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%"
|
2018-03-13 23:38:27 +08:00
|
|
|
)
|
|
|
|
shift
|
2022-10-25 04:43:21 +08:00
|
|
|
goto :var_loop
|
2018-03-13 23:38:27 +08:00
|
|
|
|
|
|
|
:start
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES variables
|
2018-09-03 06:32:20 +08:00
|
|
|
%lib_base% cmder_shell
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_debug% init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%"
|
|
|
|
%print_debug% init.bat "Env Var - debug_output=%debug_output%"
|
2018-03-13 23:38:27 +08:00
|
|
|
|
2022-11-04 17:28:24 +08:00
|
|
|
:: Set the Cmder directory paths
|
|
|
|
set CMDER_CONFIG_DIR=%CMDER_ROOT%\config
|
2022-10-25 01:31:55 +08:00
|
|
|
|
2022-10-25 01:50:52 +08:00
|
|
|
:: Check if we're using Cmder individual user profile
|
2018-03-13 23:38:27 +08:00
|
|
|
if defined CMDER_USER_CONFIG (
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_debug% init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!"
|
2020-04-30 00:03:24 +08:00
|
|
|
|
2022-01-16 00:00:58 +08:00
|
|
|
if not exist "%CMDER_USER_CONFIG%\..\opt" md "%CMDER_USER_CONFIG%\..\opt"
|
2022-10-25 01:31:55 +08:00
|
|
|
set CMDER_CONFIG_DIR=%CMDER_USER_CONFIG%
|
2018-03-13 23:38:27 +08:00
|
|
|
)
|
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Pick right version of Clink
|
2016-03-07 05:40:06 +08:00
|
|
|
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
2020-04-06 22:15:00 +08:00
|
|
|
set clink_architecture=x86
|
2018-03-13 23:38:27 +08:00
|
|
|
set architecture_bits=32
|
2013-07-09 15:43:50 +08:00
|
|
|
) else (
|
2020-04-06 22:15:00 +08:00
|
|
|
set clink_architecture=x64
|
2018-03-13 23:38:27 +08:00
|
|
|
set architecture_bits=64
|
2013-07-09 15:43:50 +08:00
|
|
|
)
|
|
|
|
|
2018-09-03 07:18:59 +08:00
|
|
|
if "%CMDER_CLINK%" == "1" (
|
2022-10-18 19:50:35 +08:00
|
|
|
%print_verbose% "Injecting Clink!"
|
|
|
|
|
2022-10-18 20:52:05 +08:00
|
|
|
:: Check if Clink is not present
|
|
|
|
if not exist "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" (
|
|
|
|
%print_error% "Clink executable is not present in 'vendor\clink\clink_%clink_architecture%.exe'"
|
|
|
|
)
|
|
|
|
|
|
|
|
:: Run Clink
|
2022-10-25 01:31:55 +08:00
|
|
|
if not exist "%CMDER_CONFIG_DIR%\settings" if not exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
|
|
|
echo Generating Clink initial settings in "%CMDER_CONFIG_DIR%\clink_settings"
|
|
|
|
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_CONFIG_DIR%\clink_settings"
|
|
|
|
echo Additional *.lua files in "%CMDER_CONFIG_DIR%" are loaded on startup.
|
|
|
|
)
|
2021-04-12 06:28:43 +08:00
|
|
|
|
2022-10-25 01:31:55 +08:00
|
|
|
if not exist "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" (
|
|
|
|
echo Creating Cmder prompt config file: "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
|
|
|
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
|
|
|
)
|
2020-12-25 06:48:00 +08:00
|
|
|
|
2022-10-25 01:31:55 +08:00
|
|
|
:: Cleanup lagacy Clink Settings file
|
|
|
|
if exist "%CMDER_CONFIG_DIR%\settings" if exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
|
|
|
del "%CMDER_CONFIG_DIR%\settings"
|
|
|
|
)
|
2020-12-25 06:48:00 +08:00
|
|
|
|
2022-10-25 01:31:55 +08:00
|
|
|
:: Cleanup legacy Clink history file
|
|
|
|
if exist "%CMDER_CONFIG_DIR%\.history" if exist "%CMDER_CONFIG_DIR%\clink_history" (
|
|
|
|
del "%CMDER_CONFIG_DIR%\.history"
|
2022-10-18 19:50:35 +08:00
|
|
|
)
|
2022-10-18 20:41:54 +08:00
|
|
|
|
2022-10-25 01:31:55 +08:00
|
|
|
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
|
|
|
|
2022-10-18 20:41:54 +08:00
|
|
|
if errorlevel 1 (
|
|
|
|
%print_error% "Failed to initialize Clink with error code: %errorlevel%"
|
|
|
|
)
|
2018-09-03 07:53:49 +08:00
|
|
|
) else (
|
2022-10-18 20:41:54 +08:00
|
|
|
%print_verbose% "WARNING: Incompatible 'ComSpec/Shell' Detetected, Skipping Clink Injection!"
|
2018-09-03 06:32:20 +08:00
|
|
|
)
|
2013-07-09 15:43:50 +08:00
|
|
|
|
2020-07-24 01:41:10 +08:00
|
|
|
if "%CMDER_CONFIGURED%" GTR "1" (
|
2022-10-18 19:50:35 +08:00
|
|
|
%print_verbose% "Cmder is already configured, skipping Cmder Init!"
|
2020-06-09 09:18:23 +08:00
|
|
|
|
2022-10-25 01:50:52 +08:00
|
|
|
goto :USER_ALIASES
|
2020-07-24 01:41:10 +08:00
|
|
|
) else if "%CMDER_CONFIGURED%" == "1" (
|
2022-10-18 19:50:35 +08:00
|
|
|
%print_verbose% "Cmder is already configured, skipping to Cmder User Init!"
|
2020-07-24 01:41:10 +08:00
|
|
|
|
2022-10-25 01:50:52 +08:00
|
|
|
goto :USER_CONFIG_START
|
2020-06-09 09:18:23 +08:00
|
|
|
)
|
|
|
|
|
2015-08-24 02:09:06 +08:00
|
|
|
:: Prepare for git-for-windows
|
2013-11-04 01:04:36 +08:00
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Detect which git.exe version to use
|
2016-03-03 00:30:45 +08:00
|
|
|
:: * if the users points as to a specific git, use that
|
|
|
|
:: * test if a git is in path and if yes, use that
|
|
|
|
:: * last, use our vendored git
|
2018-02-23 03:20:08 +08:00
|
|
|
:: also check that we have a recent enough version of git by examining the version string
|
2016-04-08 22:55:49 +08:00
|
|
|
if defined GIT_INSTALL_ROOT (
|
2018-09-16 23:18:10 +08:00
|
|
|
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
|
2022-10-19 05:03:10 +08:00
|
|
|
set GIT_INSTALL_ROOT=
|
2018-11-04 08:36:51 +08:00
|
|
|
) else if "%fast_init%" == "1" (
|
|
|
|
if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" (
|
2022-10-18 19:50:35 +08:00
|
|
|
%print_debug% init.bat "Skipping Git Auto-Detect!"
|
|
|
|
goto :VENDORED_GIT
|
2018-11-04 08:36:51 +08:00
|
|
|
)
|
2016-03-03 00:30:45 +08:00
|
|
|
)
|
|
|
|
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_debug% init.bat "Looking for Git install root..."
|
2018-05-27 02:29:19 +08:00
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Get the version information for vendored git binary
|
2020-09-13 20:27:10 +08:00
|
|
|
%lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" 2>nul
|
2018-09-16 23:18:10 +08:00
|
|
|
%lib_git% validate_version VENDORED %GIT_VERSION_VENDORED%
|
2018-02-23 03:20:08 +08:00
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Check if git is in path
|
2022-10-19 05:03:10 +08:00
|
|
|
for /F "delims=" %%F in ('where git.exe 2^>nul') do call :check_git "%%~fF"
|
|
|
|
|
|
|
|
if defined GIT_INSTALL_ROOT (
|
|
|
|
goto :FOUND_GIT
|
|
|
|
) else (
|
|
|
|
goto :VENDORED_GIT
|
2020-02-22 00:52:52 +08:00
|
|
|
)
|
|
|
|
|
2022-10-19 05:03:10 +08:00
|
|
|
:check_git
|
|
|
|
set full_path="%~f1"
|
|
|
|
if not defined GIT_INSTALL_ROOT (
|
|
|
|
if not [\%full_path:\cmd\git.exe=:%]==[\%full_path%] (
|
|
|
|
:: Get the absolute path to the user provided git binary
|
2022-10-19 14:51:56 +08:00
|
|
|
%lib_git% is_git_shim "%~dp1"
|
2022-10-19 05:03:10 +08:00
|
|
|
%lib_git% get_user_git_version
|
|
|
|
%lib_git% compare_git_versions
|
|
|
|
)
|
|
|
|
)
|
|
|
|
exit /b
|
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Our last hope: use vendored git
|
2016-03-03 00:30:45 +08:00
|
|
|
:VENDORED_GIT
|
2016-04-08 22:55:49 +08:00
|
|
|
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
2015-08-24 02:09:06 +08:00
|
|
|
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
2022-04-16 22:51:26 +08:00
|
|
|
%print_debug% init.bat "Using vendored Git '%GIT_VERSION_VENDORED%'..."
|
2018-09-16 23:18:10 +08:00
|
|
|
goto :CONFIGURE_GIT
|
2016-03-03 00:30:45 +08:00
|
|
|
) else (
|
|
|
|
goto :NO_GIT
|
2015-01-10 16:59:18 +08:00
|
|
|
)
|
|
|
|
|
2018-09-16 23:18:10 +08:00
|
|
|
:SPECIFIED_GIT
|
2022-04-16 22:51:26 +08:00
|
|
|
%print_debug% init.bat "Using /GIT_INSTALL_ROOT..."
|
2018-09-16 23:18:10 +08:00
|
|
|
goto :CONFIGURE_GIT
|
|
|
|
|
2016-03-03 00:30:45 +08:00
|
|
|
:FOUND_GIT
|
2022-04-16 22:51:26 +08:00
|
|
|
%print_debug% init.bat "Using found Git '%GIT_VERSION_USER%' from '%GIT_INSTALL_ROOT%..."
|
2018-09-16 23:18:10 +08:00
|
|
|
goto :CONFIGURE_GIT
|
|
|
|
|
|
|
|
:CONFIGURE_GIT
|
2022-04-16 22:51:26 +08:00
|
|
|
%print_debug% init.bat "Using Git from '%GIT_INSTALL_ROOT%..."
|
2015-01-10 16:59:18 +08:00
|
|
|
:: Add git to the path
|
2020-07-30 04:48:01 +08:00
|
|
|
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" ""
|
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Add the unix commands at the end to not shadow windows commands like more and find
|
2019-10-13 22:07:23 +08:00
|
|
|
if %nix_tools% equ 1 (
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_verbose% "Preferring Windows commands"
|
2019-10-13 22:07:23 +08:00
|
|
|
set "path_position=append"
|
|
|
|
) else (
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_verbose% "Preferring *nix commands"
|
2019-10-13 22:07:23 +08:00
|
|
|
set "path_position="
|
|
|
|
)
|
2018-12-03 00:44:18 +08:00
|
|
|
|
2019-10-13 22:07:23 +08:00
|
|
|
if %nix_tools% geq 1 (
|
2020-01-07 11:57:29 +08:00
|
|
|
if exist "%GIT_INSTALL_ROOT%\mingw32" (
|
|
|
|
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw32\bin" %path_position%
|
|
|
|
) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
|
|
|
|
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw64\bin" %path_position%
|
2021-02-08 23:23:30 +08:00
|
|
|
)
|
|
|
|
if exist "%GIT_INSTALL_ROOT%\usr\bin" (
|
2021-01-17 06:34:22 +08:00
|
|
|
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\usr\bin" %path_position%
|
2020-01-07 11:57:29 +08:00
|
|
|
)
|
2019-10-13 22:07:23 +08:00
|
|
|
)
|
2018-03-23 22:20:07 +08:00
|
|
|
|
2022-10-18 19:50:35 +08:00
|
|
|
:: Plink (PuTTY Link) is a command-line connection tool similar to ssh, setting its protocol to ssh
|
|
|
|
set PLINK_PROTOCOL=ssh
|
|
|
|
|
|
|
|
:: Define SVN_SSH so we can use git svn with ssh svn repositories
|
2019-10-13 22:07:23 +08:00
|
|
|
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
|
|
|
|
|
|
|
:: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path.
|
|
|
|
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\locale.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\locale.exe"
|
2022-10-18 19:50:35 +08:00
|
|
|
if not defined git_locale for /F "tokens=* delims=" %%F in ('where locale.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" )
|
2019-10-13 22:07:23 +08:00
|
|
|
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\env.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\env.exe" /usr/bin/locale
|
2022-10-18 19:50:35 +08:00
|
|
|
if not defined git_locale for /F "tokens=* delims=" %%F in ('where env.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" /usr/bin/locale )
|
2019-12-05 05:04:16 +08:00
|
|
|
|
2020-08-25 08:27:56 +08:00
|
|
|
setlocal enabledelayedexpansion
|
2019-12-05 05:04:16 +08:00
|
|
|
if defined git_locale (
|
2022-10-18 19:50:35 +08:00
|
|
|
REM %print_debug% init.bat "Env Var - git_locale=!git_locale!"
|
|
|
|
if not defined LANG (
|
|
|
|
for /F "delims=" %%F in ('!git_locale! -uU 2') do (
|
|
|
|
set "LANG=%%F"
|
|
|
|
)
|
|
|
|
)
|
2015-01-10 16:59:18 +08:00
|
|
|
)
|
2020-08-25 08:27:56 +08:00
|
|
|
endlocal && set LANG=%LANG%
|
2015-01-10 16:59:18 +08:00
|
|
|
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_debug% init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
|
|
|
%print_debug% init.bat "Found Git in: '%GIT_INSTALL_ROOT%'"
|
2018-05-27 02:29:19 +08:00
|
|
|
goto :PATH_ENHANCE
|
|
|
|
|
2016-03-03 00:30:45 +08:00
|
|
|
:NO_GIT
|
2018-05-27 02:29:19 +08:00
|
|
|
:: Skip this if GIT WAS FOUND else we did 'endlocal' above!
|
|
|
|
endlocal
|
2016-03-03 00:30:45 +08:00
|
|
|
|
2018-05-27 02:29:19 +08:00
|
|
|
:PATH_ENHANCE
|
2018-09-02 05:37:27 +08:00
|
|
|
%lib_path% enhance_path "%CMDER_ROOT%\vendor\bin"
|
2020-06-08 03:32:15 +08:00
|
|
|
|
|
|
|
:USER_CONFIG_START
|
2020-04-30 00:03:24 +08:00
|
|
|
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
2018-03-13 23:38:27 +08:00
|
|
|
if defined CMDER_USER_BIN (
|
2022-10-18 19:50:35 +08:00
|
|
|
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
2018-03-13 23:38:27 +08:00
|
|
|
)
|
2018-03-23 22:20:07 +08:00
|
|
|
%lib_path% enhance_path "%CMDER_ROOT%" append
|
2013-07-16 05:45:25 +08:00
|
|
|
|
2016-03-07 22:12:50 +08:00
|
|
|
:: Drop *.bat and *.cmd files into "%CMDER_ROOT%\config\profile.d"
|
|
|
|
:: to run them at startup.
|
2018-03-23 22:20:07 +08:00
|
|
|
%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d"
|
2018-03-13 23:38:27 +08:00
|
|
|
if defined CMDER_USER_CONFIG (
|
2022-10-18 19:50:35 +08:00
|
|
|
%lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
2016-03-07 22:12:50 +08:00
|
|
|
)
|
2015-11-25 06:38:26 +08:00
|
|
|
|
2020-07-24 01:41:10 +08:00
|
|
|
:USER_ALIASES
|
2016-03-20 21:30:20 +08:00
|
|
|
:: Allows user to override default aliases store using profile.d
|
2016-05-08 07:10:44 +08:00
|
|
|
:: scripts run above by setting the 'aliases' env variable.
|
2016-05-07 23:56:08 +08:00
|
|
|
::
|
|
|
|
:: Note: If overriding default aliases store file the aliases
|
2018-12-14 04:13:17 +08:00
|
|
|
:: must also be self executing, see '.\user_aliases.cmd.default',
|
2016-05-07 23:56:08 +08:00
|
|
|
:: and be in profile.d folder.
|
2018-09-02 06:17:09 +08:00
|
|
|
if not defined user_aliases (
|
2022-10-25 01:31:55 +08:00
|
|
|
set "user_aliases=%CMDER_CONFIG_DIR%\user_aliases.cmd"
|
2018-03-13 23:38:27 +08:00
|
|
|
)
|
2016-05-08 03:20:24 +08:00
|
|
|
|
2018-09-03 07:18:59 +08:00
|
|
|
if "%CMDER_ALIASES%" == "1" (
|
2022-10-18 19:50:35 +08:00
|
|
|
REM The aliases environment variable is used by alias.bat to id
|
|
|
|
REM the default file to store new aliases in.
|
|
|
|
if not defined aliases (
|
|
|
|
set "aliases=%user_aliases%"
|
|
|
|
)
|
|
|
|
|
|
|
|
REM Make sure we have a self-extracting user_aliases.cmd file
|
|
|
|
if not exist "%user_aliases%" (
|
|
|
|
echo Creating initial user_aliases store in "%user_aliases%"...
|
|
|
|
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
|
|
|
) else (
|
|
|
|
%lib_base% update_legacy_aliases
|
|
|
|
)
|
|
|
|
|
|
|
|
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd'
|
|
|
|
if exist "%CMDER_ROOT%\config\aliases" (
|
|
|
|
echo Updating old "%CMDER_ROOT%\config\aliases" to new format...
|
|
|
|
type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%"
|
|
|
|
del "%CMDER_ROOT%\config\aliases"
|
|
|
|
) else if exist "%user_aliases%.old_format" (
|
|
|
|
echo Updating old "%user_aliases%" to new format...
|
|
|
|
type "%user_aliases%.old_format" >> "%user_aliases%"
|
|
|
|
del "%user_aliases%.old_format"
|
|
|
|
)
|
2016-03-20 21:30:20 +08:00
|
|
|
)
|
2018-03-13 23:38:27 +08:00
|
|
|
|
2016-03-22 03:35:48 +08:00
|
|
|
:: Add aliases to the environment
|
2020-12-25 06:48:00 +08:00
|
|
|
type "%user_aliases%" | findstr /b /l /i "history=cat " >nul
|
|
|
|
if "%ERRORLEVEL%" == "0" (
|
2022-10-18 19:50:35 +08:00
|
|
|
echo Migrating alias 'history' to new Clink 1.x.x...
|
|
|
|
call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history
|
|
|
|
echo Restart the session to activate changes!
|
2020-12-25 06:48:00 +08:00
|
|
|
)
|
|
|
|
|
2018-09-02 06:17:09 +08:00
|
|
|
call "%user_aliases%"
|
2016-03-22 03:35:48 +08:00
|
|
|
|
2022-10-25 04:43:21 +08:00
|
|
|
if "%CMDER_CONFIGURED%" gtr "1" goto :CMDER_CONFIGURED
|
2020-07-24 01:41:10 +08:00
|
|
|
|
Added/enhanced bash with cmder.sh/user-cmder.sh, organized tasks menu
added personal files to .gitignore so they never get uploaded to the repo and added support for msys2 bash in the new git for windows
added autocreate of config/user-cmder.sh if iot does not exist and added it to the .gitignore
Added tasks: cmd::Cmder, cmd::Cmder as Admin, bash::bash, bash::bash as Admin, bash::mintty, bash::mintty as admin, powershell::powershell, powershell::powershell as Admin. Set default task to cmd::Cmder. Cot rid of init.bat running before /bin/bash, fixes double exit requirement
Added running git for windows post-install.bat on first cmder launch
fixed file/path not found errors when launching powershell as admin
fixed file/path not found errors when launching bash/mintty as admin
fixed PATH in vendor/cmder.sh
Added sourcing ~/.bashrc if it exists.
changed .gitignore to ignore anything with path of config/user-*
removed my personal files from .gitignore, left in config/user-*
Make sure $CMDER_ROOT does not have a trailing '/'
%CMDER_ROOT% does not have trailing '\'. allow user to specify a conemu.xml on the command line
Removed '\' from %CMDER_ROOT%
2015-11-09 11:25:42 +08:00
|
|
|
:: See vendor\git-for-windows\README.portable for why we do this
|
|
|
|
:: Basically we need to execute this post-install.bat because we are
|
|
|
|
:: manually extracting the archive rather than executing the 7z sfx
|
2018-03-13 23:38:27 +08:00
|
|
|
if exist "%GIT_INSTALL_ROOT%\post-install.bat" (
|
2020-01-06 05:52:23 +08:00
|
|
|
echo Running Git for Windows one time Post Install....
|
2018-03-13 23:38:27 +08:00
|
|
|
pushd "%GIT_INSTALL_ROOT%\"
|
2019-06-03 18:23:00 +08:00
|
|
|
"%GIT_INSTALL_ROOT%\git-cmd.exe" --no-needs-console --no-cd --command=post-install.bat
|
2017-11-11 00:05:47 +08:00
|
|
|
popd
|
Added/enhanced bash with cmder.sh/user-cmder.sh, organized tasks menu
added personal files to .gitignore so they never get uploaded to the repo and added support for msys2 bash in the new git for windows
added autocreate of config/user-cmder.sh if iot does not exist and added it to the .gitignore
Added tasks: cmd::Cmder, cmd::Cmder as Admin, bash::bash, bash::bash as Admin, bash::mintty, bash::mintty as admin, powershell::powershell, powershell::powershell as Admin. Set default task to cmd::Cmder. Cot rid of init.bat running before /bin/bash, fixes double exit requirement
Added running git for windows post-install.bat on first cmder launch
fixed file/path not found errors when launching powershell as admin
fixed file/path not found errors when launching bash/mintty as admin
fixed PATH in vendor/cmder.sh
Added sourcing ~/.bashrc if it exists.
changed .gitignore to ignore anything with path of config/user-*
removed my personal files from .gitignore, left in config/user-*
Make sure $CMDER_ROOT does not have a trailing '/'
%CMDER_ROOT% does not have trailing '\'. allow user to specify a conemu.xml on the command line
Removed '\' from %CMDER_ROOT%
2015-11-09 11:25:42 +08:00
|
|
|
)
|
|
|
|
|
2013-11-16 00:06:15 +08:00
|
|
|
:: Set home path
|
2016-05-06 21:06:59 +08:00
|
|
|
if not defined HOME set "HOME=%USERPROFILE%"
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_debug% init.bat "Env Var - HOME=%HOME%"
|
2013-12-07 22:17:35 +08:00
|
|
|
|
2018-09-01 06:02:56 +08:00
|
|
|
set "initialConfig=%CMDER_ROOT%\config\user_profile.cmd"
|
|
|
|
if exist "%CMDER_ROOT%\config\user_profile.cmd" (
|
2016-05-08 03:20:24 +08:00
|
|
|
REM Create this file and place your own command in there
|
2020-12-08 03:41:11 +08:00
|
|
|
%print_debug% init.bat "Calling - %CMDER_ROOT%\config\user_profile.cmd"
|
2018-09-01 06:02:56 +08:00
|
|
|
call "%CMDER_ROOT%\config\user_profile.cmd"
|
2018-03-13 23:38:27 +08:00
|
|
|
)
|
|
|
|
|
2018-04-04 01:20:49 +08:00
|
|
|
if defined CMDER_USER_CONFIG (
|
2022-10-18 19:50:35 +08:00
|
|
|
set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd"
|
|
|
|
if exist "%CMDER_USER_CONFIG%\user_profile.cmd" (
|
|
|
|
REM Create this file and place your own command in there
|
|
|
|
%print_debug% init.bat "Calling - %CMDER_USER_CONFIG%\user_profile.cmd"
|
|
|
|
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
|
|
|
)
|
2018-04-04 01:20:49 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
if not exist "%initialConfig%" (
|
|
|
|
echo Creating user startup file: "%initialConfig%"
|
2018-12-14 04:13:17 +08:00
|
|
|
copy "%CMDER_ROOT%\vendor\user_profile.cmd.default" "%initialConfig%"
|
2015-08-26 01:44:23 +08:00
|
|
|
)
|
2018-09-03 07:18:59 +08:00
|
|
|
|
|
|
|
if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" (
|
2022-10-18 19:50:35 +08:00
|
|
|
echo Cmder's 'alias' command has been moved into "%CMDER_ROOT%\vendor\bin\alias.cmd"
|
|
|
|
echo to get rid of this message either:
|
|
|
|
echo.
|
|
|
|
echo Delete the file "%CMDER_ROOT%\bin\alias.bat"
|
|
|
|
echo.
|
|
|
|
echo or
|
|
|
|
echo.
|
|
|
|
echo If you have customized it and want to continue using it instead of the included version
|
|
|
|
echo * Rename "%CMDER_ROOT%\bin\alias.bat" to "%CMDER_ROOT%\bin\alias.cmd".
|
|
|
|
echo * Search for 'user-aliases' and replace it with 'user_aliases'.
|
2018-09-02 05:37:27 +08:00
|
|
|
)
|
|
|
|
|
2018-04-04 01:20:49 +08:00
|
|
|
set initialConfig=
|
2020-06-10 07:41:08 +08:00
|
|
|
|
|
|
|
:CMDER_CONFIGURED
|
2020-07-24 01:41:10 +08:00
|
|
|
if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
2018-09-04 00:59:43 +08:00
|
|
|
|
2018-11-11 21:04:35 +08:00
|
|
|
set CMDER_INIT_END=%time%
|
2018-11-02 21:00:41 +08:00
|
|
|
|
|
|
|
if %time_init% gtr 0 (
|
2022-10-18 19:50:35 +08:00
|
|
|
"%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
2018-11-02 21:00:41 +08:00
|
|
|
)
|
2020-04-06 22:15:00 +08:00
|
|
|
exit /b
|