Диагностировать ошибку скрипта в zsh vs bash

Я получаю сообщение об ошибке при использовании скрипта в zsh, но ошибка возвращает только небольшой красный x в моем приглашении вместо stderr. Использование сценария в bash не возвращает ошибки и работает так, как ожидалось. Я просто использую голые кости zsh, не ОМЗ и т. Д.

Есть ли способ вывести ошибку в zsh, чтобы дать мне представление о том, где искать?


Я не думаю, что это имеет какое-то отношение к программному обеспечению, которое я устанавливаю, а скорее к zsh; однако я даже не знаю, с чего начать, где искать. Дополнительная информация для заинтересованных лиц:

Я установил пакет, обычно используемый для моделирования гидродинамической динамики (CFD) под названием OpenFOAM . OpenFOAM – это проект с множеством различных версий, и поскольку загрузка разных версий одновременно приводит к конфликтующим пространствам имен, обычно используется псевдоним для загрузки одной версии в путь оболочки. Например, файл .zshrc содержит следующие строки:

 alias of5x="source $HOME/OpenFOAM/OpenFOAM-5.x/etc/bashrc $FOAM_SETTINGS" alias of4x="source $HOME/OpenFOAM/OpenFOAM-4.x/etc/bashrc $FOAM_SETTINGS" alias of30x="source $HOME/OpenFOAM/OpenFOAM-3.0.x/etc/bashrc $FOAM_SETTINGS" 

Когда я использую псевдоним для загрузки самой последней версии ( 5x ), меня приветствует красный x в моей командной строке:

Скриншот терминала

  • Как я могу определить, контролируется ли оболочка из SSH?
  • Как настроить zsh, чтобы он объяснил мне, где я могу получить исполняемый файл вместо того, чтобы сказать, что файл не найден?
  • Как остановить bash из файлов с проверкой синтаксиса?
  • Запуск команд, хранящихся в переменных оболочки
  • Сильная команда таймаута в zsh
  • oh-my-zsh не может угадать правильную команду
  • Запрос Powerline bash не раскрашен в tmux
  • Проверить переменную - массив в Bourne как shell?
  • 2 Solutions collect form web for “Диагностировать ошибку скрипта в zsh vs bash”

    Этот сценарий предназначен для использования с любой совместимой с POSIX оболочкой, так как сам говорит:

      # Должен использоваться любой POSIX-совместимый shell (например, ksh) 

    Скрипты в этой части OpenFOAM просто делятся на две строки на скрипты для C-оболочек и скриптов для POSIX-совместимых оболочек. Этот конкретный скрипт очень мало отличается от if , [ , export и unset и нет проблемы с оболочкой Bourne Again).

    Простая истина заключается в том, что вопрос неправильно утверждает

    Я просто использую bare-bones zsh

    Фактически, у вопросителя явно есть PROMPT который печатает красный крест, если статус выхода последней команды был ненулевым (как этот из темы powerline ). Конечно, для этого конкретного скрипта он отличен от нуля, потому что последняя команда в скрипте:

    [ "$BASH" ] && . $WM_PROJECT_DIR/etc/config.sh/bash_completion

    Это дает ненулевой статус выхода для скрипта в оболочке Z, что заставляет подсказку опроса отображать красный символ. По иронии судьбы, эта проверка была включена, чтобы убедиться, что сценарий работает счастливо с оболочками Korn и Z; что он делает, красный крест и статус выхода являются чисто косметическими проблемами.

    Использование нестандартных символов Unicode в командной строке powerline private-use-area является подсказкой, что здесь это не приглашение оболочки Vanilla Z.

    дальнейшее чтение

    • StephanG (2017-07-27). Sourcing bashrc с использованием оболочки ksh в 5.0 . Ошибка 2636. Фонд OpenFOAM.
    • Генри Уэллер (2017-07-27). etc / bashrc: Обновлено для поддержки ksh и zsh . OpenFOAM / OpenFOAM-5.x. GitHub.
    • Почему эти модные персонажи не отображаются в моей подсказке?

    zsh и bash являются переводчиками для двух разных языков, вы не можете ожидать, что zsh сможет интерпретировать любой код, написанный для bash , однако вы можете это сделать:

     alias of5x="emulate bash -c 'source $HOME/OpenFOAM/OpenFOAM-5.x/etc/bashrc $FOAM_SETTINGS'" 

    Для zsh введите режим эмуляции bash для запуска этой команды source .

    Этот emulate уменьшит, но не устранит различия между zsh и bash. Обратите внимание, что любая функция, объявленная в этом исходном файле, сохранит этот режим эмуляции.

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

    Interesting Posts

    Вопрос об экологической переменной

    Как отобразить дерево устройств ядра

    Debian: невозможно установить пакеты с помощью apt-get

    Какова связь между SLED и OpenSUSE?

    Как пакет работает без всех зависимостей, установленных в целевой системе?

    сдвинутый экран с картой AMD оба драйвера

    Vim – Есть ли способ получить немедленную визуальную обратную связь во время вставки в режиме визуального блока?

    Удалить пробел для набора строк в редакторе Vim

    Добавить DNS-серверы имен в OpenBSD

    Как отображать сообщения printk, отфильтрованные по уровню по мере их поступления?

    Как исключить сообщения auditd из dmesg и регистрировать их только в /var/log/audit.log

    Установка статического IP для eth1 на beaglebone black

    Bash: неоднозначное перенаправление

    Как я могу игнорировать функции энергосбережения KDE для определенных программ?

    Настроить vim's: сделать, чтобы переключаться или открывать вкладки при ошибке

    Linux и Unix - лучшая ОС в мире.