是否可以从脚本更改当前目录?
我想在Bash中创建一个目录导航实用程序。我创建了一个测试脚本,如下所示:
#!/bin/bash
cd /home/artemb
当我从Bash shell执行脚本时,当前目录不会改变。是否有可能从脚本更改当前shell目录?
是否可以从脚本更改当前目录?
我想在Bash中创建一个目录导航实用程序。我创建了一个测试脚本,如下所示:
#!/bin/bash
cd /home/artemb
当我从Bash shell执行脚本时,当前目录不会改变。是否有可能从脚本更改当前shell目录?
当前回答
把上面的内容放在一起,就可以创建一个别名
alias your_cmd=". your_cmd"
如果你不想每次都写开头的"." 你想把你的脚本源到shell环境, 或者如果你只是不想记住,那就必须这么做 脚本才能正确工作。
其他回答
启动脚本时,将创建一个只继承您的环境的新进程。当它结束时,它就结束了。您当前的环境保持不变。
相反,你可以这样开始你的脚本:
. myscript.sh
的。将评估当前环境中的脚本,因此它可能会被更改
声明你的路径:
PATH='/home/artemb'
cd ${PATH}
基本上我们使用cd..从每个目录返回。我想通过给出一次需要返回的目录数量来使它更容易。您可以使用alias命令使用单独的脚本文件来实现这一点。例如:
code.sh
#!/bin/sh
_backfunc(){
if [ "$1" -eq 1 ]; then
cd ..
elif [ "$1" -eq 2 ]; then
cd ../..
elif [ "$1" -eq 3 ]; then
cd ../../..
elif [ "$1" -eq 4 ]; then
cd ../../../..
elif ["$1" -eq 10]; then
cd /home/arun/Documents/work
fi
}
alias back='_backfunc'
在当前shell中使用source code.sh后,您可以使用:
$back 2
从当前目录后退两步。详细解释在这里。这里还解释了如何将代码放入~/中。Bashrc,以便每个打开的新shell都将自动具有这个新的别名命令。您可以通过添加更多if条件和不同的参数来修改代码,从而添加新的命令以进入特定的目录。你也可以从git中获取代码。
这是以上答案的一个简化汇编。 创建shell文件shell .sh 在脚本中,在函数中更改目录
#!/bin/bash
cd folder1/folder2/
现在运行脚本。在这之前。 . 使用当前线程/会话执行脚本。
. shellfile.sh
简单地去
yourusername/.bashrc (or yourusername/.bash_profile on MAC) by an editor
然后把下面的代码加到最后一行:
alias yourcommand="cd /the_path_you_wish"
然后退出编辑。
然后输入:
source ~/.bashrc or source ~/.bash_profile on MAC.
现在你可以在终端中使用:your命令