zsh:找不到命令:ls

ABa*_*ach 3 loops zsh function

我对zsh有一个相当奇怪的问题.当我启动我的shell时,一切 - 功能,环境变量,别名等 - 一切正常.我创建了以下函数并在zsh中获取它:

clean()
{
    path=/tmp    
    for i in ${path}/*; do
      echo $i
    done
}
Run Code Online (Sandbox Code Playgroud)

运行clean在终端正常工作,因为它打印出的所有文件在/ tmp /.然而,之后,尝试任何命令 - 例如,ls - 产生这样的:

zsh: command not found: ls
Run Code Online (Sandbox Code Playgroud)

我有几个其他功能正常工作,这让我相信,不知何故,该循环导致问题.无论如何,这是非常令人沮丧的,我真诚地感谢社区的眼睛.谢谢!

ABa*_*ach 5

问题是分配path变量 - 因为zsh保留了该变量(除了PATH),覆盖它会删除shell查找任何命令的能力.

当然,正确的答案是使用以下变量$path:

local_path=/tmp    
for i in ${local_path}/*; do
  echo $i
done
Run Code Online (Sandbox Code Playgroud)