skywind3000 / z.lua

:zap: A new cd command that helps you navigate faster by learning your habits.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

cnyy7 opened this issue · comments

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 ?

新的 macOS 没有 python 了吗?

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

lua z.lua --init zsh enhanced echo once

看看什么输出。

新的 macOS 没有 python 了吗?

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

奇怪 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

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

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

更新到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

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

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

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

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

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

客气,先关闭了。