У меня установлен Github для Windows (Win7 x64). Он также имел удобный ярлык, позволяющий запускать Git-оптимизированный экземпляр Powershell (который также отображал информацию, такую как состояние файла git, в приглашении в отслеживаемой папке).

Я удалил этот ярлык некоторое время назад, и теперь я пытаюсь восстановить его. Я нашел скрипт, который он выполнял (shell.ps1 в папке приложения), но попытка запустить его приводит к нескольким довольно ужасным ошибкам, таким как:

Set-Alias : The AllScope option cannot be removed from the alias 'cat'.
At C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1:11 char:10
+ set-alias <<<<  cat        get-content
    + CategoryInfo          : WriteError: (cat:String) [Set-Alias], SessionStateUnauthorizedAccessException
    + FullyQualifiedErrorId : AliasAllScopeOptionCannotBeRemoved,Microsoft.PowerShell.Commands.SetAliasCommand

Я могу просто использовать альтернативу (например, оболочку msys), но мне действительно любопытно, почему версия PowerShell не работает.

3 ответа3

1

Смотрите ответы на https://stackoverflow.com/q/17457182/95580 ; у меня сработала следующая команда:

%LocalAppData%\GitHub\GitHub.appref-ms --reinstall-shortcuts
1

Ошибка предлагает столкновение между вашим профилем и shell.ps1. Этот конкретный пример, вероятно, связан с тем, что в вашем профиле определен псевдоним cat , и он пытается перезаписать тот, что указан в shell.ps1

Я бы последовал предложению самого сценария:

Generally you would run this from your Powershell Profile like this:

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1")

В любом случае: суть этого не в этом скрипте, а в его модуле, поэтому обязательно добавьте еще одну строку в свой профиль:

Import-Module $env:posh_git

Это часть, которая обрабатывает подсказку и другие элементы.

Если вы хотите избежать использования профиля - просто используйте ключ -noprofile на powershell.exe .

0

Что ж, мне удалось собрать решение, вручную загрузив мой posh-git в мой профиль (команда Import-Module $env:posh_git не работала и выдавала неприятную ошибку о том, что $ env:posh_git не является модулем):

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1")
. (Resolve-Path "$env:LOCALAPPDATA\GitHub\PoshGit_e0fc5e56ff55708a890f408f03656f758fa0ba8a\profile.example.ps1")

... и закомментировав все псевдонимы по умолчанию в моем файле профиля по умолчанию, расположенном в (C:\Windows\System32\WindowsPowerShell\v1.0). Это работало и без этого последнего изменения, но Poweshell продолжал показывать кучу ошибок при запуске. Как ни странно, псевдонимы типа cat и ls все еще работают.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .