当前位置: 首页 > news >正文

Shell脚本和Python的工作路径

在Linux中,工作目录(Working Directory)是指当前进程执行时所处的目录路径。工作目录会影响文件路径的解析,相对路径是基于工作目录来确定的。

场景描述

假设在项目根目录 / 下运行一个位于子目录 /home/user/scripts 中的 Bash 脚本 script.sh,而该脚本中又调用了一个 Python 程序 program.py。我们需要分析脚本和 Python 程序的工作目录。


1. 运行 Bash 脚本时的工作目录

  • 当你从根目录 / 运行脚本时:

    cd /
    /home/user/scripts/script.sh
    
    • 脚本 script.sh 的工作目录是 调用脚本时所在的目录,即 /(根目录)。
    • 即使脚本位于 /home/user/scripts,它的工作目录仍然是 /
  • 如果你先切换到脚本所在目录再运行脚本:

    cd /home/user/scripts
    ./script.sh
    
    • 此时脚本的工作目录是 /home/user/scripts

2. 脚本中运行 Python 程序时的工作目录

  • script.sh 中调用 Python 程序 program.py
    python3 /home/user/scripts/program.py
    
    • Python 程序的工作目录继承自调用它的 Bash 脚本。
    • 如果脚本的工作目录是 /,那么 Python 程序的工作目录也是 /
    • 如果脚本的工作目录是 /home/user/scripts,那么 Python 程序的工作目录也是 /home/user/scripts

3. 在脚本或 Python 程序中改变工作目录

  • 在 Bash 脚本中,可以使用 cd 命令改变工作目录:

    cd /home/user/scripts
    python3 program.py
    
    • 此时 Python 程序的工作目录是 /home/user/scripts
  • 在 Python 程序中,可以使用 os.chdir() 改变工作目录:

    import os
    os.chdir("/home/user/scripts")
    
    • 这会将 Python 程序的工作目录改为 /home/user/scripts

4. 获取当前工作目录

  • 在 Bash 脚本中,可以使用 pwd 命令获取当前工作目录:

    echo "Current directory: $(pwd)"
    
  • 在 Python 程序中,可以使用 os.getcwd() 获取当前工作目录:

    import os
    print("Current directory:", os.getcwd())
    

总结

  • Bash 脚本的工作目录:取决于调用脚本时所在的目录。
  • Python 程序的工作目录:继承自调用它的 Bash 脚本,除非在脚本或 Python 程序中显式更改。
  • 如果需要确保程序在特定目录下运行,可以在脚本或 Python 程序中显式切换工作目录。

例如:

#!/bin/bash
cd /home/user/scripts
python3 program.py

这样无论从哪个目录调用脚本,Python 程序的工作目录都会是 /home/user/scripts

相关文章:

  • 滚动弹幕案例
  • 面基Spring Boot项目中实用注解一
  • 电子电气架构 --- 电子电器新技术及发展趋势
  • [JVM篇]垃圾回收器
  • Windows第九章 控件的介绍
  • 共指消解问题的早期研究成果主要来自自然语 言处理领域
  • AdaMix
  • PH热榜 | 2025-02-16
  • c语言基础09
  • 什么决定了硬件设计质量?
  • Web后端 - Maven管理工具
  • 深入解析计算机网络请求头:常见类型与安全性影响
  • FFmpeg源码:url_find_protocol函数分析
  • maven——使用idea创建maven项目(文件夹上颜色)
  • 15.2 ProcessStartInfo类
  • 浏览器Cookies、SessionStorage 和 LocalStorage
  • RL--2
  • 机器学习:十大算法实现汇总
  • 组件库地址
  • 神经网络新手入门(3)光明顶复出(2006-2012)
  • 朝鲜称将在各领域采取反制措施,应对美国敌对挑衅
  • 浙江省委金融办原副主任潘广恩被“双开”
  • 嫩黑线货物列车脱轨致1名路外人员死亡,3人被采取刑事强制措施
  • 上海国际碳中和博览会下月举办,首次打造民营经济专区
  • 病重老人取钱在银行门口去世,家属:已协商一致
  • 舱位已排到月底,跨境电商忙补货!美线订单大增面临爆舱,6月运价或翻倍