<分区>
我正在开发一个项目,在我的 GitLab CE 实例中远程创建一个存储库(该部分正在运行!),然后使用项目名称创建一个目录(正在运行!)并 cd 进入该目录(这里是我遇到问题的地方......)然后在本地初始化并添加远程存储库(工作!!!)
我遇到的问题只是更改到新目录。无论我使用下面显示的代码,还是只是尝试 cd "$1"
或 cd "$*"
我似乎都无法让它工作!
#!/bin/bash
dir="$*"
wd=$(pwd)
fulldir="$(pwd)/${dir// /\\ }/"
echo "Creating directory $dir"
mkdir -v "$dir"
cd "$dir"
echo "Changing current directory to $dir"
echo $dir
echo $fulldir
这段代码的输出是:
root@cana:~# ls
glnewproj test
root@cana:~# bash test Hello World
Creating directory Hello World
mkdir: created directory 'Hello World'
Changing current directory to Hello World
Hello World
/root/Hello\ World/
root@cana:~# ls
Hello World glnewproj test
root@cana:~# pwd
/root
如何cd
进入我新创建的目录?我完全被难住了。
编辑:
键入每个 ghoti 的函数并在 .bashrc
和我的测试脚本中测试它。
直接从 bash 运行函数时:
root@cana:~# ls
glnewproj test test2
root@cana:~# mkcd "Hello World"
root@cana:~/Hello World#
从新测试脚本中运行函数时:
root@cana:~# ls
glnewproj test test2
root@cana:~# cat test2
#!/bin/bash
mkcd() {
mkdir -p "$1" && cd "$1"
}
mkcd "$1"
root@cana:~# bash test2 "Hello World"
root@cana:~# ls
Hello World glnewproj test test2
因此脚本仍然作为子脚本运行,因此不会更新父 shell 的当前目录。在脚本末尾生成新 shell 是我唯一的选择吗?