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

这个问题在这里已经有了答案:

  • 从50个答案中获取Bash脚本的源代码目录
  • Bash获得另一个bash脚本调用后的文件当前目录[复制] 2个答案

  • 如果我对所有你想去的地方有所了解,我的建议就是

  • 尽可能使代码在当前目录之外运行。
  • 如果可以避免的话,不要用多个变量来抛弃用户的环境。
  • 如果你必须有环境变量,给他们一个清楚地传达他们相关的名字的名字。
  • 在一些更具体的结论中,命名项目根的单个变量应该是你真正需要的。 如果预期文件位于当前目录中,则不要求设置它。

    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的基本知识,你甚至可以将它作为一个选项来记录。


    在脚本文件中使用dirname $0来查找当前脚本文件所在的目录

    链接地址: http://www.djcxy.com/p/9759.html

    上一篇: bash shell store path to current file as variable?

    下一篇: bash script not running in nohup but working fine as stand alone