bash:.bashrc 中的环境变量

问题描述 投票:0回答:1

以下 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 盘...)

这是否意味着对于这个示例,我不需要在函数中导出两个环境变量,或者这些变量总是覆盖同一函数随后执行的脚本中定义的变量(具有相同的名称)?

bash variables
1个回答
0
投票

出口似乎是正确的。我认为问题出在

export home=$(pwd)
。这看起来好像您假设变量
home
将包含主目录的路径(例如
/home/yourusername/
)。但是,
pwd
打印当前目录的路径,因此新目录的位置将始终在您的工作目录中。

无论哪种方式,您都不需要环境变量。

  • 要在工作目录中创建新目录,请使用
    mkdir test_dir
  • 要在主目录中创建新目录,请使用
    mkdir ~/test_dir
    mkdir "$HOME/test_dir"
© www.soinside.com 2019 - 2024. All rights reserved.