Вопрос или проблема
Только что обнаружил doskey emacs=emacs -nw $*
, но без чего-то вроде .bashrc
мне придется вводить это каждый раз, когда я запускаю shell, не так ли?
Это очень хороший вопрос. Я нашел это. Полагаю, вы могли бы создать скрипт для cmd и запускать его при запуске cmd 😕
; Выполнить команду при запуске CMD.exe
[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor]
"AutoRun"=-
РЕДАКТИРОВАТЬ:
Я только что попробовал это. У меня AutoRun=C:\mini\bashrc.cmd
, и bashrc.cmd имеет
@echo off
set TEST_VAR=something
когда я запускаю cmd и ввожу echo %TEST_VAR%
, он говорит something
. Так что это работает 🙂
Изменение ответа nc3b для тех, кто является новичком в Windows, как я.
Создайте файл в C:\bashrc.cmd
или в любом другом месте, где вы хотите разместить ваш “rc” файл.
@echo off
set TEST_VAR=something
Запустите regedit
, найдя его или запустив в cmd.
В папках слева перейдите к:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor
Щелкните правой кнопкой мыши на папке Command Processor
и выберите New -> String Value
. Введите ключ AutoRun
. Дважды щелкните на AutoRun
и введите расположение bashrc C:\bashrc.cmd
.
Тест:
Откройте новое окно cmd и введите:
echo %TEST_VAR%
если оно говорит something
, это работает.
Вы можете создать ярлык на cmd.exe
и добавить переключатель /k
для выполнения определенного .bat файла при запуске, что-то вроде этого:
cmd.exe /k "%HOMEDRIVE%\%HOMEPATH%\cmd-startup.bat"
cmd-startup.bat
в вашем домашнем каталоге будет работать так же, как .bashrc
Предположим, ваш shell – это Powershell, а не cmd, вы можете создать профиль для вашего shell. Такие профили по сути являются скриптами, которые выполняются при запуске shell. Точно так же, как .bashrc
. Важной частью этого поста может быть следующее:
Расположения (в Windows Vista) профилей для хоста powershell.exe такие:
%windir%\system32\WindowsPowerShell\v1.0\profile.ps1
Это для всех пользователей компьютера и для всех оболочек.%windir%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
Это для всех пользователей компьютера, но только для оболочки Microsoft.PowerShell.%UserProfile%\Documents\WindowsPowerShell\profile.ps1
Это только для текущего пользователя и для всех оболочек.%UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Это только для текущего пользователя и только для оболочки Microsoft.PowerShell.Эти профили не создаются по умолчанию. Они существуют только если вы их создадите.
Похоже, что то же самое на Windows 7, 8 и 10. Вы также можете найти больше информации здесь.
Примечание: Возможно, вам нужно будет выполнить следующее. Иначе ваш профиль может не быть выполнен.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Вы также можете выполнить следующее от имени администратора, чтобы изменить конфигурацию для всех пользователей.
Set-ExecutionPolicy RemoteSigned
Всем людям, пришедшим из мира, похожего на unix, и наткнувшимся на этот вопрос (т.е. всем, поскольку вопрос касается .bashrc
): радикально улучшите свою жизнь с консолью Windows и прекратите использовать стандартный cmd.exe
и терминал Windows! Никто, задавший этот вопрос или читающий ответы на него, не должен использовать текущий стандартный cmd.exe
и терминал!
Если готовы отказаться от стандартного cmd.exe
(я не знаю ни одной причины, чтобы этого не сделать), простым ответом на изначальный вопрос будет:
Установите и используйте Cmder, и ваш эквивалент .bashrc
будет
%CMDER_ROOT%\config\user_profile.cmd
, при этом значительно улучшая ваш опыт работы с shell/консолью.
Мнения, расширения и свободно связанные рекомендации следуют…
Cmder – это метапакет, который включает в себя ConEmu, Clink и множество дополнительных настроек и инструментов. ConEmu – это эмулятор терминала, который предоставляет возможность использовать стартовые скрипты, что (с помощью стандартных настроек ConEmu, предоставленных Cmder) напрправляет к указанному %CMDER_ROOT%\config\user_profile.cmd
.
Возможно, вам захочется просто использовать ConEmu и Clink отдельно, вместо использования собранного пакета Cmder.
Для этого и чтобы добавить больше “должен работать на Windows, что мне делать” блаженства, ниже приведены некоторые хорошие/субъективные вещи, которые можно сделать. Это, безусловно, ОЧЕНЬ слабо связано с исходным вопросом, но я недавно снова настраивал Windows, уже написал большую часть из этого, и целевая аудитория этого вопроса правильная, так что вот…
- Используйте scoop.sh для всех ваших установок
- scoop – это отличный менеджер пакетов для windows (похожий на apt/yum/pacman/emerge/whatever)… где все пакеты устанавливаются для пользователя (без необходимости в административных правах)
- обязательно установите
extras
bucket для многих не-консольных вещей (scoop bucket add extras
) - вы также можете использовать chocolatey, но (по моему мнению) только под принуждением и если то, что вы хотите, не оказалось в scoop bucket
- или просто создайте свой собственный манифест scoop
- это грустный день, когда того, что я хочу, нет в scoop bucket 🙁
- в отличие от scoop, chocolatey требует административных прав для своих установок
- Используйте Clink в качестве вашей оболочки вместо
cmd.exe
scoop install clink
- предоставляет вам удобство GNU readline (например, навигацию по истории команд с помощью ctrl-r, ctrl-s) и многое другое
- обязательно также выполните
clink autorun install
, чтобы она выполнялась при запускеcmd.exe
- Используйте ConEmu в качестве вашего эмулятора терминала
scoop install conemu
- Windows терминал ужасен (но над ним работают)
- обязательно настройте его как терминал по умолчанию
- “Force ConEmu” и “Register on OS startup” в
Settings::Integration->Default term
- “Force ConEmu” и “Register on OS startup” в
- ОЧЕНЬ МНОГО других возможных конфигураций
- если вы перегружены, возможно, лучше просто придерживаться Cmder и его разумных настроек по умолчанию (
scoop install cmder
), но я лично считаю, что чище устанавливать/использовать Clink и ConEmu отдельно.
- если вы перегружены, возможно, лучше просто придерживаться Cmder и его разумных настроек по умолчанию (
- Установите Gow (прямо сейчас)
scoop install gow
- > 100 GNU инструментов (
grep
,vim
,sed
,ls
,cat
,curl
,wc
,less
,find
и т.д.), которые вы знаете и любите, прямо в вашем терминале, похожем наcmd.exe
, без не-нативных странностей - остерегайтесь переименований с конфликтами имен, таких как
find->gfind
иawk->gawk
- я использую Gow почти исключительно для работы с Windows вместо заморочек с WSL, Cygwin, MSYS, git bash и т.д.
- Gow инструменты достигают такой степени GNU/*nix-на-Windows, какой я пока не видел, оставаясь нативными для Windows, без головной боли от Cygwin окружений, мерзости файловой системы WSL (над которой также работают), gitbash windows и т.д.
- Установите другие полезные инструменты по своему усмотрению (с помощью scoop)
- в main и extras scoop bucket есть много хороших инструментов и приложений (python, openssh, ripgrep, fzf, sysinternals, sublime-text, meld, ccleaner и т.д.)
- хотя это не GNU/unix вещь, sysinternals – это незаменимая/классическая коллекция нативных инструментов Windows.
- используйте
scoop search
иscoop info
, чтобы найти нужные вам инструменты, или просмотрите bucket (существует несколько bucket, не только main и extras)
- в main и extras scoop bucket есть много хороших инструментов и приложений (python, openssh, ripgrep, fzf, sysinternals, sublime-text, meld, ccleaner и т.д.)
РЕДАКТИРОВАТЬ: Нашел это: http://msdn.microsoft.com/en-us/library/bb613488(VS.85).aspx
Чтобы разъяснить решение Мартина (ярлык), вот эквивалент для PowerShell.
ПРИМЕЧАНИЕ: Вам нужно будет включить выполнение скриптов PowerShell. Если это отключено, вам нужно будет запустить PowerShell с повышенными правами и выполнить Set-ExecutionPolicy Unrestricted
. Очевидно, это не рекомендуется по соображениям безопасности, но вот так.
powershell.exe -noexit -File "%HOMEDRIVE%\%HOMEPATH%\ps-startup.ps1"
Имейте файл с именем ps-startup.ps1
в вашей пользовательской директории, и ваш ярлык выполнит его как PowerShell файл при запуске. Просто запускайте PowerShell с этим ярлыком с этого момента.
В принципе, ответ nc3b работает, но пакет Chocolatey DevBox-Common сделает это проще.
- Если вы еще не установили Chocolatey, установите его.
- Установите пакет DevBox-Common с помощью
choco install devbox-common -y
- Вы должны ввести эту команду в административной командной строке или PowerShell.
- Теперь у вас есть
.bashrc.bat
и.bashrc.include.aliases-common.bat
в вашем домашнем пути. Каждый файл, соответствующий.bashrc.include.*.bat
будет выполняться при каждом запуске командной оболочки.
Этот ответ не может быть заменой всей функциональности .bashrc, но вы можете создавать псевдонимы в Windows так же легко, как и в Linux.
Создайте директорию, например, C:\commands
, добавьте эту директорию в переменную окружения Path и внутри директории создайте файл cmdrc.bat
.
Добавьте следующие строки в ваш файл cmdrc.bat
set filename=%~1
set command=%~2
echo @echo off > C:\commands\%filename%.bat
echo %command% >> C:\commands\%filename%.bat
Теперь каждый раз, когда вам нужно создать псевдоним, например,
alias ls=dir
вы можете выполнить команду
cmdrc ls dir
каждый раз, когда вы выполните эту команду, она будет создавать новый bat файл в директории C:\commands.
вы можете задать ключ реестра из командной строки (и таким образом избежать части с regedit) с помощью:
REG ADD "HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor" /v "Autorun" /t REG_SZ /d "%"USERPROFILE"%"\cmd-startup.bat
Чтобы добавить скрипт автозапуска в Windows Terminal –
-
Откройте Windows Terminal
-
Нажмите на стрелку вниз рядом с вкладками и удерживая Shift, нажмите “Settings” – это откроет файл settings.json терминала в вашем редакторе JSON по умолчанию, например: “%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json”
-
Найдите профиль “Command Prompt” и измените значение “commandline” на выполнение bat файла, например
{
"profiles":
{
"list":
[
{
- "commandline": "%SystemRoot%\\System32\\cmd.exe",
+ "commandline": "%SystemRoot%\\System32\\cmd.exe /k %userprofile%\\scripts\\autostart.bat",
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"hidden": false,
"name": "Command Prompt"
},
Переключатель /k указывает cmd.exe выполнить указанную команду и остаться открытой после этого.
-
Сохраните изменения в файле настроек
-
Создайте файл autostart.bat, например в “%USERPROFILE%\scripts\autostart.bat” –
@echo Hello, world!
- Перезапустите Windows Terminal – когда вы откроете профиль, он автоматически выполнит bat файл.
Hello, world!
C:\Users\yourname>
вы можете создать файл macros.doskey
я думаю или macro.cmd
что-то вроде этого.
Я создал репозиторий, который является мусором и имеет множество макросов. Я создал руководство по установке, но это слишком сложно
Я просто создал какой-то мусорный скрипт, но он работает. Просто создайте .cmdrc в вашей пользовательской папке, и если вы запустите командную строку из кода ниже, вы выполните строки .cmdrc как команды.
cmd.exe /K "(echo @echo off & type %USERPROFILE%\.cmdrc & echo. & echo cls & echo @cmd.exe) > %tmp%\cmdrc.bat & cmd.exe /K "call %tmp%\cmdrc.bat""
И если вы вставите это в Windows Terminal, вы сможете использовать это в качестве команды по умолчанию вместо обычного cmd.exe.
.
Ответ или решение
Вопрос о том, есть ли в Windows эквивалент файлу .bashrc из Linux, часто возникает у пользователей, которые переключаются с одной операционной системы на другую и стремятся сохранить или адаптировать свои привычные рабочие процессы. В Linux файл .bashrc позволяет пользователям автоматизировать команды и конфигурации, которые исполняются при каждом запуске Bash. Это удобный инструмент для настройки среды командной строки. Попробуем разобраться, что можно использовать в Windows для достижения аналогичного результата.
Общая теория
В Windows нет прямого аналог файла .bashrc, так как традиционный интерфейс командной строки в этой ОС — это cmd.exe, который имеет ограниченные возможности по сравнению с Bash. Тем не менее, существуют аналогичные механизмы и инструменты, которые позволяют автоматизировать запуск команд при старте командной оболочки в Windows.
Примеры и сравнительный анализ
-
Использование реестра для AutoRun в cmd.exe:
Вы можете использовать реестр Windows для автоматизации команд, запускаемых при старте cmd.exe. Это можно сделать, добавив запись в реестр, которая указывает на файл .cmd или .bat, содержащий необходимые команды. Например:REG ADD "HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor" /v "AutoRun" /t REG_SZ /d "C:\path\to\your\script.cmd"
Данный подход позволяет выполнять скрипт каждый раз при запуске cmd.exe, эмулируя поведение .bashrc.
-
PowerShell профили:
PowerShell предлагает более современный и гибкий подход и поддерживает профили, аналогичные .bashrc. Файлы профиля PowerShell (например,%UserProfile%\Documents\WindowsPowerShell\profile.ps1
) позволяют выполнять скрипты при старте оболочки PowerShell. Эти профили создаются вручную и могут включать различные команды и функции, которые автоматически загружаются в сессию PowerShell.Чтобы включить выполнение скриптов в PowerShell, может потребоваться изменить политику исполнения команд:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
-
Консольные эмуляторы и расширения:
Проекты, такие как ConEmu и Cmder, предлагают пользователям Windows возможности, более близкие к тем, что предоставляет Bash. Cmder, например, объединяет ConEmu с Clink, чтобы предоставить богатый функционал, включая настройку команд автозагрузки с помощьюuser_profile.cmd
. -
Создание алиасов:
В Windows можно создавать бат-файлы для имитации алиасов. Например, создание файлаls.bat
, который будет содержать командуdir
, имитирует алиасls
дляdir
. Включение папки с файлами алиасов в системную переменную средыPath
позволит использовать их из любого местоположения в системе. -
Инструменты пакетного управления:
Применение утилит вродеscoop
илиchocolatey
для установки необходимых инструментов может значительно улучшить работу с командной строкой в Windows, предлагая возможности для автоматизации и настройки среды.
Практическое применение
Для пользователей, переходящих с Linux на Windows и ищущих способ адаптировать свой командный интерфейс к привычной функциональности, описанные выше методы могут быть очень полезны. PowerShell, с его мощными профилями, и внешние терминальные расширения, как Cmder, делают среду Windows более гибкой и схожей с Unix-подобными системами. Кроме того, использование утилит пакетного менеджмента, таких как scoop
, упрощает установку и управление полезными командными инструментами.
Такой подход позволит сохранить производительность и удобство работы, за которые вы цените Linux, и сделает переход на Windows менее болезненным. Применяя эти методы, вы сможете настроить окружение Windows, наиболее подходящее для ваших нужд, и использовать его по максимуму.