skywind3000 / z.lua

:zap: A new cd command that helps you navigate faster by learning your habits.
MIT License
2.97k stars 139 forks source link

Error on macOS Monterey: sh: python: command not found lua: /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:2248: attempt to concatenate a nil value #154

Closed cnyy99 closed 2 years ago

cnyy99 commented 2 years ago

After upgrade to macOS Monterey 12.3,it appears errors at terminal startup. But z $path command working properly as usual 升级到macOS Monterey 12.3之后,在启动终端时会出现以下报错,不过z $path命令能够正常使用。

sh: python: command not found
lua: /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:2248: attempt to concatenate a nil value
stack traceback:
    /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:2248: in function 'z_shell_init'
    /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:1961: in function 'main'
    /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:2733: in main chunk
    [C]: in ?
skywind3000 commented 2 years ago

新的 macOS 没有 python 了吗?

skywind3000 commented 2 years ago

奇怪 2248 行和 python 没关系了啊,我没环境,你能不能帮看一下? 直接执行下:

lua z.lua --init zsh enhanced echo once

看看什么输出。

cnyy99 commented 2 years ago

新的 macOS 没有 python 了吗?

macOS 12.3里把python2.7删了,详见:macos-12_3-release-notes

cnyy99 commented 2 years ago

奇怪 2248 行和 python 没关系了啊,我没环境,你能不能帮看一下? 直接执行下:

lua z.lua --init zsh enhanced echo once

看看什么输出。

/Users/chennan/.oh-my-zsh/custom/plugins/z.lua下:

lua z.lua --init zsh enhanced echo once

ZLUA_SCRIPT="/Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua"
ZLUA_LUAEXE="/usr/local/bin/lua"

_zlua() {
    local arg_mode=""
    local arg_type=""
    local arg_subdir=""
    local arg_inter=""
    local arg_strip=""
    if [ "$1" = "--add" ]; then
        shift
        _ZL_RANDOM="$RANDOM" "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" --add "$@"
        return
    elif [ "$1" = "--complete" ]; then
        shift
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" --complete "$@"
        return
    fi
    while [ "$1" ]; do
        case "$1" in
            -l) local arg_mode="-l" ;;
            -e) local arg_mode="-e" ;;
            -x) local arg_mode="-x" ;;
            -t) local arg_type="-t" ;;
            -r) local arg_type="-r" ;;
            -c) local arg_subdir="-c" ;;
            -s) local arg_strip="-s" ;;
            -i) local arg_inter="-i" ;;
            -I) local arg_inter="-I" ;;
            -h|--help) local arg_mode="-h" ;;
            --purge) local arg_mode="--purge" ;;
            *) break ;;
        esac
        shift
    done
    if [ "$arg_mode" = "-h" ] || [ "$arg_mode" = "--purge" ]; then
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" $arg_mode
    elif [ "$arg_mode" = "-l" ] || [ "$#" -eq 0 ]; then
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" -l $arg_subdir $arg_type $arg_strip "$@"
    elif [ -n "$arg_mode" ]; then
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" $arg_mode $arg_subdir $arg_type $arg_inter "$@"
    else
        local zdest=$("$ZLUA_LUAEXE" "$ZLUA_SCRIPT" --cd $arg_type $arg_subdir $arg_inter "$@")
        if [ -n "$zdest" ] && [ -d "$zdest" ]; then
            if [ -z "$_ZL_CD" ]; then
                builtin cd "$zdest"
            else
                $_ZL_CD "$zdest"
            fi
            if [ -n "$_ZL_ECHO" ]; then pwd; fi
        fi
    fi
}
# alias ${_ZL_CMD:-z}='_zlua 2>&1'
alias ${_ZL_CMD:-z}='_zlua'

_zlua_precmd() {
    (_zlua --add "${PWD:a}" &)
}
typeset -ga chpwd_functions
[ -n "${chpwd_functions[(r)_zlua_precmd]}" ] || {
    chpwd_functions[$(($#chpwd_functions+1))]=_zlua_precmd
}

_zlua_zsh_tab_completion() {
    # tab completion
    (( $+compstate )) && compstate[insert]=menu # no expand
    local -a tmp=(${(f)"$(_zlua --complete "${words/_zlua/z}")"})
    _describe "directory" tmp -U
}
if [ "${+functions[compdef]}" -ne 0 ]; then
    compdef _zlua_zsh_tab_completion _zlua 2> /dev/null
fi

export _ZL_MATCH_MODE=1
_ZL_ECHO=1
skywind3000 commented 2 years ago

你能不能先更新下版本,你这看起来完全是一个非常老的版本,行号都全部对应不起来。

cnyy99 commented 2 years ago

你能不能先更新下版本,你这看起来完全是一个非常老的版本,行号都全部对应不起来。

更新到1.8.4之后:

sh: python: command not found
lua: /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:2255: attempt to concatenate a nil value
stack traceback:
    /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:2255: in function 'z_shell_init'
    /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:1965: in function 'main'
    /Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua:2750: in main chunk
    [C]: in ?

执行lua z.lua --init zsh enhanced echo once

ZLUA_SCRIPT="/Users/chennan/.oh-my-zsh/custom/plugins/z.lua/z.lua"
ZLUA_LUAEXE="/usr/local/bin/lua"

_zlua() {
    local arg_mode=""
    local arg_type=""
    local arg_subdir=""
    local arg_inter=""
    local arg_strip=""
    if [ "$1" = "--add" ]; then
        shift
        _ZL_RANDOM="$RANDOM" "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" --add "$@"
        return
    elif [ "$1" = "--complete" ]; then
        shift
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" --complete "$@"
        return
    fi
    while [ "$1" ]; do
        case "$1" in
            -l) local arg_mode="-l" ;;
            -e) local arg_mode="-e" ;;
            -x) local arg_mode="-x" ;;
            -t) local arg_type="-t" ;;
            -r) local arg_type="-r" ;;
            -c) local arg_subdir="-c" ;;
            -s) local arg_strip="-s" ;;
            -i) local arg_inter="-i" ;;
            -I) local arg_inter="-I" ;;
            -h|--help) local arg_mode="-h" ;;
            --purge) local arg_mode="--purge" ;;
            *) break ;;
        esac
        shift
    done
    if [ "$arg_mode" = "-h" ] || [ "$arg_mode" = "--purge" ]; then
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" $arg_mode
    elif [ "$arg_mode" = "-l" ] || [ "$#" -eq 0 ]; then
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" -l $arg_subdir $arg_type $arg_strip "$@"
    elif [ -n "$arg_mode" ]; then
        "$ZLUA_LUAEXE" "$ZLUA_SCRIPT" $arg_mode $arg_subdir $arg_type $arg_inter "$@"
    else
        local zdest=$("$ZLUA_LUAEXE" "$ZLUA_SCRIPT" --cd $arg_type $arg_subdir $arg_inter "$@")
        if [ -n "$zdest" ] && [ -d "$zdest" ]; then
            if [ -z "$_ZL_CD" ]; then
                builtin cd "$zdest"
            else
                $_ZL_CD "$zdest"
            fi
            if [ -n "$_ZL_ECHO" ]; then pwd; fi
        fi
    fi
}
# alias ${_ZL_CMD:-z}='_zlua 2>&1'
alias ${_ZL_CMD:-z}='_zlua'

_zlua_precmd() {
    (_zlua --add "${PWD:a}" &)
}
typeset -ga chpwd_functions
[ -n "${chpwd_functions[(r)_zlua_precmd]}" ] || {
    chpwd_functions[$(($#chpwd_functions+1))]=_zlua_precmd
}

_zlua_zsh_tab_completion() {
    # tab completion
    (( $+compstate )) && compstate[insert]=menu # no expand
    local -a tmp=(${(f)"$(_zlua --complete "${words/_zlua/z}")"})
    _describe "directory" tmp -U
}
if [ "${+functions[compdef]}" -ne 0 ]; then
    compdef _zlua_zsh_tab_completion _zlua 2> /dev/null
fi

export _ZL_MATCH_MODE=1
_ZL_ECHO=1
skywind3000 commented 2 years ago

好的,麻烦测试下最新的:

https://github.com/skywind3000/z.lua/blob/master/z.lua

cnyy99 commented 2 years ago

好的,麻烦测试下最新的:

https://github.com/skywind3000/z.lua/blob/master/z.lua

最新版没报错了,可以正常使用,感谢支持。

skywind3000 commented 2 years ago

客气,先关闭了。