shell 函数 cd 中断 $PATH
shell fucntion cd breaks $PATH
我正在尝试使用脚本更改工作目录。
在 .zshrc 中:
source myscript
在我的脚本中:
fucntion cdd(){
$path=(find xxx |fzf) #just a command to get a path
cd $path
}
zle -N cdd
bindkey '\et' cdd #Alt+t
我想做类似fzf
的事情。
在我按下alt+t后,我确实改变了工作目录,但似乎我的环境坏了。(我需要 Enter 才能获得 shell 回升)
(<---note I need to press Enter to get shell promote)
➜ c vim
zsh: command not found: vim
➜ c ls
zsh: command not found: ls
➜ c pwd
/home/xxx/document/c
➜ c echo $PATH
./document/c
➜ c
最后一个命令 pwd
运行良好。奇怪的是我的 $PATH 改变了。我不明白为什么。
$path=(find xxx |fzf)
是错误的。你想要:
mypath=$(find ...)
即省略前导$
。一般来说,path
是一个不好的变量名,所以我使用 mypath
。 PATH
在所有 shell 中都有特殊含义,而 path
在 zsh
中很重要。特别地,path
是一个数组变量,由要搜索可执行文件的目录组成。 path
和 PATH
是绑定的(请参阅 zsh
文档中的 typedef -T
),因此修改 path
会有效地更改 PATH
.
我正在尝试使用脚本更改工作目录。
在 .zshrc 中:
source myscript
在我的脚本中:
fucntion cdd(){
$path=(find xxx |fzf) #just a command to get a path
cd $path
}
zle -N cdd
bindkey '\et' cdd #Alt+t
我想做类似fzf
的事情。
在我按下alt+t后,我确实改变了工作目录,但似乎我的环境坏了。(我需要 Enter 才能获得 shell 回升)
(<---note I need to press Enter to get shell promote)
➜ c vim
zsh: command not found: vim
➜ c ls
zsh: command not found: ls
➜ c pwd
/home/xxx/document/c
➜ c echo $PATH
./document/c
➜ c
最后一个命令 pwd
运行良好。奇怪的是我的 $PATH 改变了。我不明白为什么。
$path=(find xxx |fzf)
是错误的。你想要:
mypath=$(find ...)
即省略前导$
。一般来说,path
是一个不好的变量名,所以我使用 mypath
。 PATH
在所有 shell 中都有特殊含义,而 path
在 zsh
中很重要。特别地,path
是一个数组变量,由要搜索可执行文件的目录组成。 path
和 PATH
是绑定的(请参阅 zsh
文档中的 typedef -T
),因此修改 path
会有效地更改 PATH
.