Вопрос или проблема
Мне нужно изменить папку по умолчанию, в которой терминал Windows ищет файл settings.json. С C:\Users%USER%\AppData\Local\Microsoft\Windows Terminal на мою личную c:\tools\windowsterminal. Причина в том, что c:\tools находится под версионным контролем, и я хотел бы поддерживать его в актуальном состоянии, чтобы делиться им между несколькими рабочими станциями.
Как я могу этого добиться? В качестве обходного решения, возможно, существует возможность запустить WindowsTerminal из cmd с конкретным параметром?
Обратите внимание, что я знаю, как установить начальный каталог для конкретного терминала, это не то, что я хочу.
Вы можете использовать команду mklink
в командной строке.
Вы должны использовать /H, чтобы создать так называемую “жесткую ссылку”. Сначала переместите файл.
Что-то вроде этого:
mklink /H "C:\Users\Sloven\AppData\Local\Microsoft\Windows Terminal\settings.json" "C:\tools\windowsterminal\settings.json"
Замените “Sloven” на имя пользователя, которое вы используете на своем компьютере.
Для получения дополнительной информации смотрите https://en.wikipedia.org/wiki/Symbolic_link#Microsoft_Windows или гуглите “Symlink windows”
Аргументы командной строки для Windows Terminal можно найти здесь: https://docs.microsoft.com/en-us/windows/terminal/command-line-arguments?tabs=windows
Оставляю это здесь, чтобы сэкономить кому-то время на гугление решения для Powershell
New-Item -ItemType HardLink -Path "C:\Users\Sloven\AppData\Local\Microsoft\Windows Terminal\settings.json" -Target "C:\tools\windowsterminal\settings.json"
Итог
mklink /d
для директории LocalState
сработал!
-
Закройте Windows Terminal, затем переместите всю папку
LocalState
из:%LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
в желаемое место, например
C:\backup\LocalState
. -
Щелкните правой кнопкой мыши на Командной строке > Запустить от имени администратора, затем:
mklink /d %LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState C:\backup\LocalState
-
Отличный успех! Ваши настройки теперь находятся в желаемом месте.
Вывод должен быть:
символическая ссылка создана для C:\Users\xxx\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState <<===>> C:\backup\LocalState
Фон
На 2023 год многое изменилось с тех пор, как был опубликован @Gantendo’s answer.
- Файл
settings.json
терминала Windows, похоже, теперь находится вC:\Users\xxx\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
(заменитеxxx
на ваше имя пользователя) вместо старого местоположенияLocal\Microsoft\Windows Terminal\settings.json
mklink /h
для меня не сработал, настройки не сохранялись должным образом между запусками терминала Windows- тем не менее, создание символической ссылки с
mklink /d
для всей папкиLocalState
сработало идеально!
Смотрите также:
mklink
использование
Я обнаружил, что использование символических ссылок работает для терминала Windows. Поэтому это кажется предпочтительным способом, поскольку это делает более очевидным, где находится “официальный” файл.
Файл settings.json всегда создается, если он удален, если у вас открыт любой терминал Windows. Поэтому сложно выполнить команду mklink. Что я сделал в Windows 11 Preview, так это щелкнул правой кнопкой мыши по C:/Windows/system32/cmd.exe и запустил его от имени администратора, это позволяет вам фактически запустить устаревший cmd.exe (любопытно, что просто двойной щелчок запускает новый терминал), и вы можете выполнить mklink.
Другой (современный) вариант может быть следующим:
- установка портативной версии терминала Windows
- через менеджер пакетов Scoop
- в результате, конфигурация находится в
$ScoopDir\persist\windows-terminal\settings\settings.json
(где$ScoopDir
по умолчанию равен~/scoop/
) - и возможно использовать управление версиями для всех приложений, создавая репозиторий Git для папки
persist
Преимущества:
- можно расположить где угодно: запустите установщик scoop, указав
-ScoopDir
- простой процесс резервного копирования и восстановления: просто скопируйте одну папку
- держите свои приложения актуальными: с помощью
scoop update *
- не нужно доступа в Microsoft Store: иногда это корпоративное ограничение
- не нужны административные права: как с альтернативой chocolatey
Ответ или решение
Для изменения расположения файла settings.json
в Windows Terminal и переноса его из стандартной директории C:\Users\%USER%\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
в вашу личную папку C:\tools\windowsterminal
, существует несколько подходов. В этой статье мы рассмотрим наиболее эффективный метод с использованием символических ссылок, а также альтернативные варианты.
Подход с использованием mklink
Шаги по созданию символической ссылки
-
Закройте Windows Terminal: Перед выполнением команд убедитесь, что Windows Terminal полностью закрыт, так как файл
settings.json
может быть заблокирован в открытом приложении. -
Переместите папку LocalState:
- Откройте проводник Windows и перейдите к следующему пути:
%LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
- Скопируйте папку
LocalState
и вставьте её в новое местоположение, например,C:\tools\windowsterminal
.
- Откройте проводник Windows и перейдите к следующему пути:
-
Создайте символическую ссылку:
- Откройте командную строку с правами администратора. Для этого нажмите правой кнопкой мыши на
cmd.exe
и выберите "Запуск от имени администратора". - Выполните следующую команду:
mklink /d "%LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState" "C:\tools\windowsterminal\LocalState"
- После выполнения команды должно появиться сообщение, подтверждающее создание символической ссылки, например:
символическая ссылка создана для C:\Users\xxx\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState <<===>> C:\tools\windowsterminal\LocalState
- Откройте командную строку с правами администратора. Для этого нажмите правой кнопкой мыши на
Альтернативные варианты
Помимо метода с использованием символических ссылок, существуют и другие способы конфигурации Windows Terminal:
-
Использование Portable-версии Windows Terminal:
- Вы можете установить портативную версию Windows Terminal, которая не требует установки и позволяет хранить конфигурацию в удобном для вас месте. Подробности доступны на странице официальной документации.
-
Управление через Scoop:
- Установите Scoop, который является менеджером пакетов для Windows. С помощью него можно контролировать версии приложений и хранить их конфигурации в папке
~/scoop/persist/windows-terminal/settings
.
- Установите Scoop, который является менеджером пакетов для Windows. С помощью него можно контролировать версии приложений и хранить их конфигурации в папке
Заключение
Переход на новое расположение файла settings.json
в Windows Terminal можно осуществить через создание символической ссылки с помощью команды mklink
. Вы также можете рассмотреть использование портативной версии или менеджера пакетов Scoop для упрощения и автоматизации процесса управления конфигурацией. Эти методы позволят вам легко поддерживать актуальность конфигураций на нескольких рабочих станциях и упростят их синхронизацию.