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将保存当前脚本的所在目录的绝对路径。

相关推荐
写代码的【黑咖啡】几秒前
Python中的BeautifulSoup:强大的HTML/XML解析库
python·html·beautifulsoup
李守聪4 分钟前
小程序定制,我的实践复盘分享
python
小二·1 小时前
Python Web 开发进阶实战:无障碍深度集成 —— 构建真正包容的 Flask + Vue 应用
前端·python·flask
web3.08889999 小时前
微店商品详情API实用
python·json·时序数据库
知乎的哥廷根数学学派10 小时前
基于数据驱动的自适应正交小波基优化算法(Python)
开发语言·网络·人工智能·pytorch·python·深度学习·算法
sunfove10 小时前
将 Python 仿真工具部署并嵌入个人博客
开发语言·数据库·python
Learner10 小时前
Python类
开发语言·python
2501_9413297210 小时前
门及其组件定位识别_YOLO13-C3k2-PoolingFormer改进模型研究
python
Ancelin安心10 小时前
kali-dirsearch的使用
linux·运维·服务器·python·计算机网络·web安全·网络安全
努力学习的小洋11 小时前
Python训练打卡Day5离散特征的处理-独热编码
人工智能·python·机器学习