Существует ли в Windows эквивалент файла .bashrc в Linux?

Вопрос или проблема

Только что обнаружил 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\Windows­PowerShell\v1.0\profile.ps1
    Это для всех пользователей компьютера и для всех оболочек.
  • %windir%\system32\Windows­PowerShell\v1.0\Microsoft.Power­Shell_profile.ps1
    Это для всех пользователей компьютера, но только для оболочки Microsoft.PowerShell.
  • %UserProfile%\Documents\Windows­PowerShell\profile.ps1
    Это только для текущего пользователя и для всех оболочек.
  • %UserProfile%\Documents\WindowsPowerShell\Micro­soft.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, уже написал большую часть из этого, и целевая аудитория этого вопроса правильная, так что вот…

  1. Используйте scoop.sh для всех ваших установок
    • scoop – это отличный менеджер пакетов для windows (похожий на apt/yum/pacman/emerge/whatever)… где все пакеты устанавливаются для пользователя (без необходимости в административных правах)
    • обязательно установите extras bucket для многих не-консольных вещей (scoop bucket add extras)
    • вы также можете использовать chocolatey, но (по моему мнению) только под принуждением и если то, что вы хотите, не оказалось в scoop bucket
    • или просто создайте свой собственный манифест scoop
    • это грустный день, когда того, что я хочу, нет в scoop bucket 🙁
    • в отличие от scoop, chocolatey требует административных прав для своих установок
  2. Используйте Clink в качестве вашей оболочки вместо cmd.exe
    • scoop install clink
    • предоставляет вам удобство GNU readline (например, навигацию по истории команд с помощью ctrl-r, ctrl-s) и многое другое
    • обязательно также выполните clink autorun install, чтобы она выполнялась при запуске cmd.exe
  3. Используйте ConEmu в качестве вашего эмулятора терминала
    • scoop install conemu
    • Windows терминал ужасен (но над ним работают)
    • обязательно настройте его как терминал по умолчанию
      • “Force ConEmu” и “Register on OS startup” в Settings::Integration->Default term
    • ОЧЕНЬ МНОГО других возможных конфигураций
      • если вы перегружены, возможно, лучше просто придерживаться Cmder и его разумных настроек по умолчанию (scoop install cmder), но я лично считаю, что чище устанавливать/использовать Clink и ConEmu отдельно.
  4. Установите 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 и т.д.
  5. Установите другие полезные инструменты по своему усмотрению (с помощью 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)

РЕДАКТИРОВАТЬ: Нашел это: 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 сделает это проще.

  1. Если вы еще не установили Chocolatey, установите его.
  2. Установите пакет DevBox-Common с помощью choco install devbox-common -y
    • Вы должны ввести эту команду в административной командной строке или PowerShell.
  3. Теперь у вас есть .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

  1. Откройте Windows Terminal

  2. Нажмите на стрелку вниз рядом с вкладками и удерживая Shift, нажмите “Settings” – это откроет файл settings.json терминала в вашем редакторе JSON по умолчанию, например: “%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json”

  3. Найдите профиль “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 выполнить указанную команду и остаться открытой после этого.

  1. Сохраните изменения в файле настроек

  2. Создайте файл autostart.bat, например в “%USERPROFILE%\scripts\autostart.bat” –

@echo Hello, world!
  1. Перезапустите 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.

Примеры и сравнительный анализ

  1. Использование реестра для 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.

  2. PowerShell профили:
    PowerShell предлагает более современный и гибкий подход и поддерживает профили, аналогичные .bashrc. Файлы профиля PowerShell (например, %UserProfile%\Documents\WindowsPowerShell\profile.ps1) позволяют выполнять скрипты при старте оболочки PowerShell. Эти профили создаются вручную и могут включать различные команды и функции, которые автоматически загружаются в сессию PowerShell.

    Чтобы включить выполнение скриптов в PowerShell, может потребоваться изменить политику исполнения команд:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  3. Консольные эмуляторы и расширения:
    Проекты, такие как ConEmu и Cmder, предлагают пользователям Windows возможности, более близкие к тем, что предоставляет Bash. Cmder, например, объединяет ConEmu с Clink, чтобы предоставить богатый функционал, включая настройку команд автозагрузки с помощью user_profile.cmd.

  4. Создание алиасов:
    В Windows можно создавать бат-файлы для имитации алиасов. Например, создание файла ls.bat, который будет содержать команду dir, имитирует алиас ls для dir. Включение папки с файлами алиасов в системную переменную среды Path позволит использовать их из любого местоположения в системе.

  5. Инструменты пакетного управления:
    Применение утилит вроде scoop или chocolatey для установки необходимых инструментов может значительно улучшить работу с командной строкой в Windows, предлагая возможности для автоматизации и настройки среды.

Практическое применение

Для пользователей, переходящих с Linux на Windows и ищущих способ адаптировать свой командный интерфейс к привычной функциональности, описанные выше методы могут быть очень полезны. PowerShell, с его мощными профилями, и внешние терминальные расширения, как Cmder, делают среду Windows более гибкой и схожей с Unix-подобными системами. Кроме того, использование утилит пакетного менеджмента, таких как scoop, упрощает установку и управление полезными командными инструментами.

Такой подход позволит сохранить производительность и удобство работы, за которые вы цените Linux, и сделает переход на Windows менее болезненным. Применяя эти методы, вы сможете настроить окружение Windows, наиболее подходящее для ваших нужд, и использовать его по максимуму.

Оцените материал
Добавить комментарий

Капча загружается...