60

Just discovered doskey emacs=emacs -nw $*, but without something like .bashrc, I'll have to type that every time I start a shell, right?

migrated from stackoverflow.com May 23 '10 at 11:10

This question came from our site for professional and enthusiast programmers.

61

This is a very good question. I found this. I suppose you could make a cmd script and have it run when starting cmd :-?

; Run a command when CMD.exe starts
[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor]
"AutoRun"=-

EDIT: I just tried it. I have AutoRun=C:\mini\bashrc.cmd and bashrc.cmd is

@echo off
set TEST_VAR=something

when I start cmd and enter echo %TEST_VAR% it says something. So it works :)

  • 8
    Small snippet I use: doskey∙♦=exit (where is [char]4). Enables you to close the shell with Ctrl+D, Enter. – Joey May 23 '10 at 12:13
  • This work great, nice job nc3b. – Robert S Ciaccio Jul 28 '10 at 3:57
  • 2
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor with AutoRun=%HOMEPATH%\bashrc.bat So every user would have his own startup-sequence – bambam2174 Jul 18 '13 at 8:29
  • 5
    I must be an idiot but where do I put this code? – Marcel Oct 10 '14 at 23:46
  • 1
    probably easiest to set to... AUTORUN=%USERPROFILE%\autorun.cmd so that it will use one for the current user... cool trick though, will try it when I get home... I mostly use bash lately, but this would help. – Tracker1 Sep 18 '15 at 22:40
19

You can create a shortcut to cmd.exe and add the /k switch to run a certain .bat file on startup, something like this:

cmd.exe /k "%HOMEDRIVE%\%HOMEPATH%\cmd-startup.bat"

cmd-startup.bat in your home dir would then work just like .bashrc

13

Modification of mc3b's answer for those who are windows noobs like myself.

Make a file in C:\bashrc.cmd or wherever you want your "rc" file to reside.

@echo off
set TEST_VAR=something

Run regedit by searching for it or running it in cmd.

In the folders on the left navigate to:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

Right click on the Command Processor folder and click New -> String Value. Enter the key AutoRun. Double click on AutoRun and enter the bashrc location C:\bashrc.cmd.

Test: Open a new cmd window and type:

echo %TEST_VAR%

if it says something, it works.

5

Assuming your shell is Powershell, not cmd, you can create a profile for your shell. Such profiles basically are scripts which are executed when you start a shell. Just like .bashrc. An important part of this post might be the following:

The locations (on Windows Vista) of the profiles for the powershell.exe host are as follows:

  • %windir%\system32\Windows­PowerShell\v1.0\profile.ps1
    This is for all users of the computer and for all shells.
  • %windir%\system32\Windows­PowerShell\v1.0\Microsoft.Power­Shell_profile.ps1
    This is for all users of the computer, but it is only for the Microsoft.PowerShell shell.
  • %UserProfile%\Documents\Windows­PowerShell\profile.ps1
    This is for the current user only and all shells.
  • %UserProfile%\Documents\WindowsPowerShell\Micro­soft.PowerShell_profile.ps1
    This is for the current user only and only for the Microsoft.PowerShell shell.

These profiles aren't created by default. They exist only if you create them.

It seems to be the same on Windows 7, 8 and 10. You can also find more information here.


Note: You may need to run the following. Otherwise, your profile may not be executed.

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

You can also run the following as administrator to change the configuration for all users.

Set-ExecutionPolicy RemoteSigned
3

EDIT: Found this: http://msdn.microsoft.com/en-us/library/bb613488(VS.85).aspx

To expound on Martin's solution (the shortcut), here's the PowerShell equivalent.

NOTE: You will need to have PowerShell script execution enabled. If this is disabled, you'll need to run an elevated PowerShell and execute Set-ExecutionPolicy Unrestricted. Obviously, this is not recommended for security reasons, but there ya go.

powershell.exe -noexit -File "%HOMEDRIVE%\%HOMEPATH%\ps-startup.ps1"

Have a file named ps-startup.ps1 in your user directory and your shortcut will execute it as a PowerShell file on startup. Just run PowerShell with this shortcut from here on out.

  • This can be achieved in a "better" way through powershell profiles. You can find the location of your current profile by: echo $profile . You can add lines to that file, and that should do it for future sessions. For existing sessions, you can reload the profile with: & $profile . – ashic Dec 16 '15 at 10:54
3

Basically nc3b's answer works, but Chocolatey's DevBox-Common package will make it easier.

  1. If you have not already installed Chocolatey, install it.
  2. Install DevBox-Common package by choco install devbox-common -y
    • You should type this command inside administrative cmd.exe or PowerShell.
  3. Now you have .bashrc.bat and .bashrc.include.aliases-common.bat in your home path. Every file matching .bashrc.include.*.bat will be executed at every command shell start.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy