Как отладить команду Shell после настройки

Я потратил некоторое время на настройку своей конфигурации, как делают многие люди. В основном я символически связываю все мои точечные файлы (.zshrc, .vimrc, ...) из репозитория git, затем я изменил много вещей.

Я на Mac OS X и моя конфигурация работает очень хорошо. Однако, когда я использую те же файлы точек в Linux (Ubuntu), я получаю некоторые различия. Большинство из них незначительные различия, но это очень раздражает.

Я пользуюсь ZSH и презто

Когда я делаю cd Я получаю это сообщение

20:17 ~ ❯ cd Projects                                                                                            

script: invalid option -- 'G'

Usage:
 script [options] [file]

Options:
 -a, --append            append the output
 -c, --command <command> run command rather than interactive shell
 -r, --return            return exit code of the child process
 -f, --flush             run flush after each write
     --force             use output file even when it is a link
 -q, --quiet             be quiet
 -t, --timing[=<file>]   output timing data to stderr (or to FILE)
 -V, --version           output version information and exit
 -h, --help              display this help and exit

Команда типа (type cd) дай мне

    cd is an alias for nocorrect cd
    cd is a shell builtin

Я пишу здесь, чтобы узнать, если кто-нибудь знает способ отладки такого рода ошибки. Сообщение об ошибке не очень ясно, и я не знаю, что и где искать.

Есть идеи?

Большая часть моей конфигурации происходит от конфигурации многих других людей.

2 ответа

Решение

Как правило, вы можете начать zsh с параметром -x для отладки. Это отобразит любую строку кода оболочки, запущенную этой оболочкой, до ее выполнения. Это помогает определить, где в вашей конфигурации все пошло не так.


В этом случае вы получите сообщение об ошибке от script потому что у него нет возможности 'G' помимо списков всех доступных опций (попробуйте и сравните script -G). Инструменты командной строки часто довольно сильно отличаются между различными производными Unix, включая количество и значение параметров командной строки. сравнить man script между вашими платформами.

Как cd это псевдоним для nocorrect cd, nocorrect кажется наиболее вероятным виновником. Чтобы проверить, запустите unalias cd, Если проблема исчезнет, ​​сделайте type nocorrect и идти оттуда.

Если проблема не устранена, найдите в своей конфигурации chpwd (это может быть определение функции или строка типа add-zsh-hook chpwd SOMETHING).

Решение для Ubuntu: найдите скрипт, в котором находится эта строка кода script -q /dev/null ls -G . и изменить его на script -q /dev/null -c 'ls -G .'

В моем случае это был prompt_paulmillr_setup, но это зависит от того, какое расширение ZSH вы используете.

Другие вопросы по тегам