Answers:
当您运行脚本时,它会为它打开一个新的子shell,因此不会更改您所在shell的环境变量(包括您的工作目录:$ PWD)。如果您希望脚本与您在同一个shell中运行,从而保留它所做的环境变量的变化,而不是执行来源。像这样:
source my-script
要么:
. my-script
但是,这将留下脚本使用的每个临时变量。如果要避免它,请在脚本中创建一个函数,并将所有临时变量声明为local。像这样:
function main()
{
local var1=whatever
cd /path/to
do-something
...
}
main
当调用时source
,这将留下所有变量,例如工作目录,但不会留下临时变量。
执行脚本会在单独的进程中运行它。当脚本退出时,对工作目录,环境变量等的更改将丢失。
要在当前bash过程中执行脚本,您需要获取脚本
. myscript.sh
是的,您可以创建一个功能来执行此操作。首先,创建一个完成所有繁重工作的脚本。
然后在.bashrc中创建一个函数,如下所示:
xcd () {
local archive="$1" dir="$2"
your_script "$archive"
cd "$dir"
}
与整个脚本不同,函数在当前shell的上下文中执行。