自定义后如何调试Shell命令

时间:2014-02-17 19:26:40

标签: linux macos shell debugging zsh

我花了一些时间来定制我的配置,例如many people do。基本上我从git存储库中将所有的dotfiles(.zshrc,.vimrc,...)符号链接,然后我改变了很多东西。

我使用的是Mac OS X,配置非常好。但是当我在Linux(Ubuntu)上使用相同的dotfiles时,我会遇到一些不同。他们中的大多数都是微小的差异,但非常烦人。

我使用 ZSH prezto

当我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 个答案:

答案 0 :(得分:1)

Ubuntu的解决方案:找到此代码行所在的脚本script -q /dev/null ls -G .并将其更改为script -q /dev/null -c 'ls -G .'

在我的情况下,它是 prompt_paulmillr_setup ,但这取决于您使用的ZSH扩展程序。

答案 1 :(得分:0)

通常,您可以使用参数zsh启动-x进行调试。这将回显此shell在执行之前运行的任何shell代码行。这有助于找到配置中的错误位置。


在这种情况下,您会收到来自script的错误消息,因为除了所有可用选项的列表之外,它没有选项'G'(请尝试比较script -G)。命令行工具在不同的Unix衍生产品之间通常有很大不同,包括命令行选项的数量和含义。在您的平台之间比较man script

由于cdnocorrect cd的别名,nocorrect似乎是最可能的罪魁祸首。要检查,请运行unalias cd。如果问题消失,请执行type nocorrect并从那里开始。

如果问题仍然存在,请搜索chpwd的配置(这可能是功能定义或类似add-zsh-hook chpwd SOMETHING的行)。