是否可以从脚本更改当前目录?
我想在Bash中创建一个目录导航实用程序。我创建了一个测试脚本,如下所示:
#!/bin/bash
cd /home/artemb
当我从Bash shell执行脚本时,当前目录不会改变。是否有可能从脚本更改当前shell目录?
是否可以从脚本更改当前目录?
我想在Bash中创建一个目录导航实用程序。我创建了一个测试脚本,如下所示:
#!/bin/bash
cd /home/artemb
当我从Bash shell执行脚本时,当前目录不会改变。是否有可能从脚本更改当前shell目录?
当前回答
在你的shell脚本中添加以下cd行:
exec $SHELL
其他回答
鉴于答案的不可读性和过于复杂,我认为这是请求者应该做的
将该脚本添加到PATH 运行脚本。scriptname
的。(.)将确保脚本不在子shell中运行。
我喜欢为不同的项目做同样的事情,而不需要启动新的shell。
在你的情况下:
cd /home/artemb
保存为:
echo cd /home/artemb
然后启动它:
\`./the_script\`
然后使用相同的shell访问该目录。
声明你的路径:
PATH='/home/artemb'
cd ${PATH}
我还创建了一个名为goat的实用程序,您可以使用它来简化导航。
你可以在GitHub上查看源代码。
从v2.3.1开始,使用概述如下所示:
# Create a link (h4xdir) to a directory:
goat h4xdir ~/Documents/dev
# Follow a link to change a directory:
cd h4xdir
# Follow a link (and don't stop there!):
cd h4xdir/awesome-project
# Go up the filesystem tree with '...' (same as `cd ../../`):
cd ...
# List all your links:
goat list
# Delete a link (or more):
goat delete h4xdir lojban
# Delete all the links which point to directories with the given prefix:
goat deleteprefix $HOME/Documents
# Delete all saved links:
goat nuke
# Delete broken links:
goat fix
这是以上答案的一个简化汇编。 创建shell文件shell .sh 在脚本中,在函数中更改目录
#!/bin/bash
cd folder1/folder2/
现在运行脚本。在这之前。 . 使用当前线程/会话执行脚本。
. shellfile.sh