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

相关推荐
路边草随风2 分钟前
llama_index简单使用
人工智能·python·llama
Q_Q5110082852 分钟前
python+springboot+django/flask基于深度学习的旅游推荐系统
spring boot·python·django·flask·node.js·php
梨落秋霜3 分钟前
Python入门篇【if判断语句】
android·java·python
宝贝儿好4 分钟前
【强化学习】第二章:老虎机问题、ε-greedy算法、指数移动平均
人工智能·python·算法
gis分享者6 分钟前
如何在 Shell 脚本中实现文件的读写操作?(容易)
shell·文件·awk·echo·cat··
闲人编程7 分钟前
Flask-SQLAlchemy高级用法:关系建模与复杂查询
后端·python·flask·一对多·多对多·一对一·自引用
2401_841495647 分钟前
【自然语言处理】自然语言理解的分层处理机制与程序语言编译器的对比研究
人工智能·python·深度学习·自然语言处理·自然语言理解·分层处理机制·程序语言编译器
阿桂天山10 分钟前
阿桂的数据资产灵动实战 (一) 开发框架
大数据·python·软件工程
Q_Q51100828514 分钟前
python+django/flask+vue基于深度学习的家庭用电量预测模型研究系统
spring boot·python·django·flask·node.js·php
Looooking16 分钟前
Python 之 psutil 模块使用详解
python·psutil