在我的虚拟机中,我的项目位于 /var/www/vhosts/projectname/httpdocs/。
当我启动机器时,我从 /home/vagrant/ 开始。
我创建了一个脚本,可以立即将我带到我想要的项目。问题是,该脚本使用 exec 并在每次使用时创建一个新会话。
这是我的代码:
#!/usr/bin/env zsh
if [ -z "$1" ]; then
echo "No project specified"
exit 1
fi
cd /var/www/vhosts/"$1"/httpdocs/ || exit
echo "---------------------"
echo "Project: $1"
echo " https://$1.vm/"
echo " https://$1.vm/typo3"
echo "---------------------"
exec zsh
有没有其他方法可以设置当前路径而不创建新会话?
谢谢
答案1
脚本确实在子 shell 中运行,其中当前目录发生更改。脚本结束时,此环境将被终止。exec zhs
需要打开交互式 shell ( ) 才能与修改后的环境进行交互,这会打开除脚本正在运行的子 shell 之外的另一个子 shell。
用一个shell 函数可能最适合您想做的事情。
changedir () {
cd "$1"
echo "Project: $1"
}
~/.zshrc
在您的文件中包括此类函数(.bashrc
适用于 bash 用户)。当您退出并重新打开终端时,该命令changedir
将可用。
或者你应该获取脚本而不是执行它。也可以通过定义别名来优雅地实现:
alias changedir='source <pathname of your script>'
~/.zshrc
此外,还应在(或)中包含别名定义~/.bashrc
以保持持久性。与之前的方法类似,changedir
可以使用 自动完成的命令Tab。
对于更常见的用例,您只想轻松切换到树中深处的某些目录,请参阅更多选项这里。