Shell代码解读

源代码

sh 复制代码
#!/bin/bash

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# should match env name from YAML
ENV_NAME=rlgpu

pushd "${ROOT_DIR}/python"

    # setup conda
    CONDA_DIR="$(conda info --base)"
    source "${CONDA_DIR}/etc/profile.d/conda.sh"

    # deactivate the env, if it is active
    ACTIVE_ENV_NAME="$(basename ${CONDA_PREFIX})"
    if [ "${ENV_NAME}" = "${ACTIVE_ENV_NAME}" ]; then
        conda deactivate
    fi

    # !!! this removes existing version of the env
    conda remove -y -n "${ENV_NAME}" --all

    # create the env from YAML
    conda env create -f ./rlgpu_conda_env.yml
    if [ $? -ne 0 ]; then
        echo "*** Failed to create env"
        exit 1
    fi

    # activate env
    conda activate "${ENV_NAME}"
    if [ $? -ne 0 ]; then
        echo "*** Failed to activate env"
        exit 1
    fi

    # double check that the correct env is active
    ACTIVE_ENV_NAME="$(basename ${CONDA_PREFIX})"
    if [ "${ENV_NAME}" != "${ACTIVE_ENV_NAME}" ]; then
        echo "*** Env is not active, aborting"
        exit 1
    fi

    # install isaacgym package
    pip install -e .

popd

echo "SUCCESS"

逐行解读

sh 复制代码
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
复制代码
这段shell代码的主要目的是获取当前脚本的所在目录的绝对路径,并将其赋值给变量ROOT_DIR。下面是代码的解释:
  1. dirname "${BASH_SOURCE[0]}" :Bash内置的变量BASH_SOURCE[0]表示当前脚本所在的路径,dirname命令会取得该路径的父目录。

  2. cd "$(dirname "${BASH_SOURCE[0]}")" : cd命令用于切换当前工作目录,$(...)是命令替换的语法,将dirname命令的结果作为参数传递给cd命令。

  3. pwd :pwd命令用于打印当前工作目录的绝对路径。

  4. ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" :将cd命令和pwd命令的结果结合起来,并将结果赋值给变量ROOT_DIR。最终,ROOT_DIR将保存当前脚本的所在目录的绝对路径。

相关推荐
华科大胡子17 分钟前
Chrome安全机制深度解析
python
易标AI23 分钟前
标书智能体(四)——提示词顺序优化,让缓存命中,输入成本直降10倍
人工智能·python·提示词·智能体·招投标
深耕AI27 分钟前
【VS Code 中 Python 虚拟环境降级完整指南(含 uv 工具实战)】
开发语言·python·uv
→长歌1 小时前
2026Java面试30题精解
java·python·面试
Bert.Cai1 小时前
pymysql自动提交设置
开发语言·python
吃一根烤肠1 小时前
Python调试革命:用ChatGPT Copilot快速定位复杂bug
python·chatgpt·copilot
小白学大数据1 小时前
攻克滑动拼图反爬:Python 高效爬取网页图片实战案例
开发语言·爬虫·python
阿荻在肝了2 小时前
Agent学习四:RAG 技术应用
python·学习·agent
ZC跨境爬虫2 小时前
Base64编码详解(含JS_Python实现+实战逆向案例)
前端·javascript·python
小陈工2 小时前
Python Web开发入门(八):用户认证系统实现,给你的应用加上安全锁
开发语言·前端·数据库·python·安全·django·sqlite