以下 bash 函数定义了两个环境变量,将与位于外部 USB 上的脚本 test.sh 一起使用。
quick_function(){
export home=$(pwd)
export ref_folder="${home}"
local quick_path=$(find /media/$USER -type f -name test.sh)
# run script located on the usb stick from the current directory
chmod +x "$quick_path"
"$quick_path"
}
目的是在当前目录中生成一些 test_dir (而不是在 script.sh 所在的 U 盘上)。这是测试.sh
# the both input paths are commented since they have been already provided in the function defined in .bashrc
#home=$(pwd)
#ref_folder="${home}"
mkdir "$ref_folder"/test_dir
出于测试目的,我取消了 test.st 中定义的 $home 和 $ref_folder 的注释,并且(令人惊讶地)发现从 fast_function () 调用的脚本仍然在我打开终端的任何位置生成 test_dir (并且从未在U 盘...)
这是否意味着对于这个示例,我不需要在函数中导出两个环境变量,或者这些变量总是覆盖同一函数随后执行的脚本中定义的变量(具有相同的名称)?
出口似乎是正确的。我认为问题出在
export home=$(pwd)
。这看起来好像您假设变量 home
将包含主目录的路径(例如 /home/yourusername/
)。但是,pwd
打印当前目录的路径,因此新目录的位置将始终在您的工作目录中。
无论哪种方式,您都不需要环境变量。
mkdir test_dir
mkdir ~/test_dir
或 mkdir "$HOME/test_dir"
。