bash shell将当前文件的路径存储为变量?

威廉·格里姆斯

在Python中启动项目时,我想将一些环境变量保存在一个名为的environment_variables文件中,并在bashrc中将此文件作为源。

该文件如下所示:

username=$(whoami)

# project root path
export PROJECT_DIR='/home/'$username'/nuclei_segmentation/'

# project data path
export DATA_DIR=$PROJECT_DIR"data/"

# location of models 
export MODEL_DIR=$PROJECT_DIR"models/"

# project output data
export OUTPUT_DIR=$PROJECT_DIR"output/"

我想更改PROJECT_DIR路径,使其与平台/名称无关。因此,此environment_variables文件将始终位于项目的根目录中,我想将其设置PROJECT_DIR为始终是environment_variables文件的位置

我以为可以做到这一点,PWD但是当从bashrc调用时会产生错误,我还想到了一种使用find从根目录中搜索文件的解决方案,但这似乎很复杂,认为必须有更好的方法?

三元组

如果我完全了解您要进行的操作,那么我的建议是

  • 使代码尽可能不在当前目录中工作。
  • 如果可以避免,不要在用户环境中添加多个变量。
  • 如果必须使用环境变量,请给它们命名,以清楚地传达它们的相关含义。

更确切地说,您真正需要的只是一个用于命名项目根目录的变量。如果预期文件位于当前目录中,则不需要设置它。

export NUC_SEG_DIR=$HOME/nuclei_segmentation

在您的Python代码中,输入合理的默认值。在这种情况下,期望os.path.join(os.environ['NUC_SEG_DIR'], 'data')指向您的data目录等。如果用户要覆盖此目录,则使用符号链接就足够了。确保在代码中对它进行了参数设置,以便将来要使其可配置时,可以很容易地在一个地方覆盖它。也许像

def nuc_seg(root_dir=os.environ['NUC_SEG_DIR'], data_dir='./data', model_dir='./models', output_dir='./output'):
    if root_dir == '':
        root_dir='.'
    ... your code here

也许稍后再使您的命令行界面让用户通过命令行选项或配置文件覆盖这些值。

再次,不要求用户编辑他们.bash_profile或类似的用户-如果他们想在不同的目录中运行多个实验,该怎么办?他们可以弄清楚如何使环境变量永久化,或者如果不希望您的用户熟悉Shell的基础知识,甚至可以将其记录为一个选项

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章