Nano Hash - криптовалюты, майнинг, программирование

Переменная env PS1 не работает на Mac

У меня есть скрипт (не написанный мной), который показывает ветку git branch/svn в моей командной строке. Кто-нибудь знает, почему это не работает на Mac? Он отлично работает в линуксе.

Из https://github.com/xumingming/dotfiles/blob/master/.ps1:

# Display ps1 with colorful pwd and git status
# Acording to Jimmyxu .bashrc
# Modified by Ranmocy
# --

if type -P tput &>/dev/null && tput setaf 1 &>/dev/null; then
    color_prompt=yes
else
    color_prompt=
fi

__repo () {
    branch=$(type __git_ps1 &>/dev/null && __git_ps1 | sed -e "s/^ (//" -e "s/)$//")
    if [ "$branch" != "" ]; then
        vcs=git
    else
        branch=$(type -P hg &>/dev/null && hg branch 2>/dev/null)
        if [ "$branch" != "" ]; then
            vcs=hg
        elif [ -e .bzr ]; then
            vcs=bzr
        elif [ -e .svn ]; then
            vcs=svn
        else
            vcs=
        fi
    fi
    if [ "$vcs" != "" ]; then
        if [ "$branch" != "" ]; then
            repo=$vcs:$branch
        else
            repo=$vcs
        fi
        echo -n "($repo)"
    fi
    return 0
}

if [ "$color_prompt" = yes ]; then
# PS1='\[\e[01;32m\]\u@\h\[\e[00m\]:\[\e[01;34m\]\w\[\e[33;40m\]$(__repo)\[\e[00m\]\$ '
    PS1='\[\e[01;32m\]\u\[\e[00m\]:\[\e[01;34m\]\W\[\e[33m\]$(__repo)\[\e[00m\]\$ '
else
    PS1='\u@\h:\w$(__repo)\$ '
fi
unset color_prompt

case "$TERM" in
xterm*|rxvt*)
  PS1="\[\e]0;\W\a\]$PS1"
  ;;
*)
  ;;
esac
03.05.2012

  • @ Ален, я собираюсь пойти на риск и предложить, как мне заставить его работать на Mac? 03.05.2012
  • @blahdiblah Хм, редактор предполагает, что это почему это не работает на Mac? 03.05.2012
  • @Ален Блин! Я был так близко! 03.05.2012

Ответы:


1

Установки Git для Mac OS X не включают __git_ps1.

Использовать:

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

в качестве замены.

03.05.2012
  • \(*.*)/ ура для grep \(*.*)/ 03.05.2012
  • Не красивое решение, но у меня была такая же проблема некоторое время назад, и это то, что я нашел и поместил в свой файл .profile. Наверное, я не смог найти лучшего. Я был бы счастлив увидеть это. 03.05.2012
  • Вы можете получить полное определение __git_ps1 здесь. github.com/git/git/blob/master/ contrib/completion/ Это немного сложно, но дает вам полезную информацию о перебазировании, слиянии и т. д. 04.05.2012
  • Фактически, установщик git-osx поставляется с git-completion.bash и устанавливает его. до /usr/local/git/contrib/completion/. Просто загрузите этот файл с вашего .bash_profile, чтобы получить __git_ps1. 03.07.2012
  • @sschuberth Спасибо за подсказку! Похоже, скрипт подсказки теперь разделен на git-prompt.sh, который находится в том же каталоге, что и git-completion.bash (версия git 1.8.3.4). 05.01.2014

  • 2

    Предоставленный вами скрипт не может обнаружить репозитории git, если команда __git_ps1 не удалась. Добавьте это к ~/.bash_profile:

    source /usr/local/git/contrib/completion/git-completion.bash
    source /usr/local/git/contrib/completion/git-prompt.sh
    

    Предполагая, что вы сохранили файл сценария как ~/.ps1, также добавьте:

    source ~/.ps1
    

    • Это решение также позволяет выполнять автодополнение с помощью табуляции для git.
    • Установки git для Mac OS X do включают __git_ps1, спасибо ssschuberth и удешевление за упоминание git-completion.bash.
    10.07.2012
  • Мой файл находился в папке /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash. Mountain Lion с установленным Xcode CLI. 26.06.2013

  • 3

    На новом Mac Yosemite, использующем встроенный git, я использовал это:

    source /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
    source /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
    export PS1='\[\e]0;\u@\h: \w\a\]\[\e[32;1m\]\u@\h:\w \[\e[33;1m\]$(__git_ps1 "[%s] ")\[\e[32;1m\]\$ \[\e[0m\]'
    

    Примечание: в El Capitan мне пришлось изменить путь к git-скриптам на /Applications/Xcode.app/Contents/Developer/usr/share/git-core, и я думаю, для этого у вас должен быть установлен XCode.

    01.12.2014

    4

    Если вы установили git через macports (git-core), вы должны добавить следующее в ~/.bash_profile:

    source /opt/local/etc/profile.d/bash_completion.sh
    source /opt/local/share/git-core/git-prompt.sh  
    

    Расположение git-prompt.sh, похоже, менялось несколько раз.

    02.04.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..