初识脚本, 理解 PATH 及  ~/.bashrc

本文主要叙述以下内容:

  • 什么是脚本?
  • 一个简单的脚本
  • PATH 的作用
  • .bashrc的作用
  • nodejs脚本创建demo目录

一.脚本是什么?

脚本源自戏剧舞台:

公馆一室内

王妈:(小心翼翼地)小姐,您还是得注意身子,就吃点东西吧。

鸡小姐:(把碗砸在地上)不吃,我就是不吃。

(王妈下)

脚本主要由人物对话和舞台提示组成。演员和道具组只需要按照脚本说的做即可.

计算机编程就是计算机按照脚本写的执行的,脚本就是文本,由英文字母,数字,特殊符号组成一串具有特殊意义的文本,可以一行一行的输入运行,可以写成一个文件.

脚本可以用很多语言写,javeScript, nodejs(本质还是js),VB,bash,C,php..., 每种语言有每种语言的写法(语法),不管是那种语言都可以实现相同的功能,只是用法(语法)上不同,或者说那种语言更适合,最后都是计算机照着执行的,比如 js 虽然是运行在浏览器之上,而浏览器运行在操作系统上(计算机操作系统),很多方面,高级编程语言与脚本语言没有明显的界限。


二.一个简单的脚本

  1. 新建并进入目录local: mkdir  ~/local; cd ~/local

  2. 新建脚本文件demo:     touch demo.txt

  3. 打开demo.txt : start demo.txt ,并写入内容:

    mkdir mydemo
    cd mydemo
    mkdir css js
    touch index.html  css/style.css   js/main.js
    exit
  4. 任意位置(不是 ~/local)执行: sh ~/local/demo.txt ,

  5. 你会看到当前目录下 多出 mydemo 文件夹,mydemo 里面有 /css /js index.html 

  6. ok, demo.txt 就是一个脚本,包括几行命令文本,以下为拓展

  7. 如果需要目录名可变,在步骤3 将mydemo 改为 $1 执行 demo.txt  asd , 则会新建名为asd 的目录,$1类似于占位符,1表示第1个参数

  8. 如果.txt 后缀麻烦, 执行 mv ~/local/demo.txt ~/local/demo ,执行 demo asd 即可

  9. 文件后缀只是方便区分,命名一个 A.png  的文件就一定是一个图片吗?

  10. 判断目录是否已经存在,将步骤3的修改如下

if [ -d $1 ]; then
  echo 'error: dir exists'
  exit
else
  mkdir $1
  cd $1
  mkdir css js
  touch index.html css/style.css js/main.js
  exit
fi

 

  11.返回值

  1. exit 0 表示没有错误

  2. exit 1 表示错误代码为 1

    • demo && echo ‘结束’

    • 只有在demo成功的时候,才会执行 echo "结束"


三.PATH的作用

你每次在 Bash 里面输入一个命令时(比如 cd cp demo),Bash 都会去 PATH 目录里面寻找对应的文件,如果找到了就执行。

使用 type 可以打开一个命令的路径,

  • 所有的命令都是可执行文件,就像执行 缩写的 demo,然后运行里面的脚本

  • 所有文件分为可执行文件和不可执行文件,可执行文件有很多种,不可执行文件就是配置

  • type demo 查看 demo 的路径 

    • PATH 里面有很多目录,由 ":" 分隔,当执行 demo 时先在第一个目录找,没有找到就去第二个,第三个..再没有就报错:bash: demo: command not found

    • 打印系统命令 如 type ls,不同的操作系统打印的不同,但没关系

使用 which可以看到寻找结果

使用PATH:(如果你想只运行 demo.txt  就能达到 sh ~/lcoal.demo.txt 的作用,就需要将 ~/local 添加到path 里面,分为永久设置PATH 和 临时设置,具体如下)

  • 获取 ~/local 的绝对路径 : cd ~/local; pwd

  • 临时设置PATH :

    1. export PATH="local的绝对路径:$PATH" 

    2. 任意位置(不是 ~/local)执行: demo.txt 

  • 永久设置PATH

    1. 创建 .bashrc( 理解见下节) : touch ~/.bashrc

    2. 进入并编辑:start ~/.bashrc 

      • 写入以下内容: export PATH="local的绝对路径:$PATH" 

    3. 执行 .bashrc :  source  ~/.bashrc

    4. 任意位置(不是 ~/local)执行: demo.txt  

  • 所以 当执行 demo.txt 时,由于已经在 /.bashrc 里面,为PATH添加了一个目录 ~/local,能找到demo.txt,直接执行就好了


四.~/.bashrc

.bashrc 这个文件主要保存个人的一些个性化设置,如命令别名、路径等, 是bash的个人配置文件,在用户目录下,是个隐藏文件.

可以实现 在进入 Git Bash 前执行任何命令,可以进行命令别名进行缩写,可以设置环境变量及PATH

  • 新建 .bashrc文件:touch ~/.bashrc

  • 自动运行:

    1. 命令行编辑也可以直接在文件内修改: echo "cd ~/Desktop" >> ~/.bashrc

    2. 重新打开会发现默认进入桌面目录

  • alias

    1. 命令行新增: touch"alias newTxt = 'touch demo.txt'" >>  ~/.bashrc

    2. 执行 .bashrc : source ~/.bashrc (每次修改.bashrc 都要运行)

    3. 运行 newTxt

    4. 在桌面目录新增 demo.txt

  • 环境变量

  • 设置PATH

    • export PATH="目录的绝对路径:$PATH",上面已经用过了


五.nodejs脚本创建demo目录

进入node 的 REPL编译器:node

  • 打印当前目录: process.cwd()

  • 切换目录:process.chdir("/Users/ZhouLiLi/Desktop")

下图为 打印和切换的演示

 

  • 重写demo.txt

    1. 创建 node脚本:touch ~/jsdemo.js,编辑内容如下

      • fs:file system 所有关于文件的操作

      • writeFileSync第二个参数可以写入 文本

    2. cd ~/desktop

    3. node ~/local/jsdemo.js mydemo 即可在桌面新建 mydemo 目录

    4. 在js文件第I行添加 #!/usr/bin/env node (指定执行环境)可直接运行 ~/local/jsdemo.js zzz   加入path 可直接 jsdemo.js  mv 可直接jsdemo windows测试失败!

在此我们可以得出一个容易理解的结果 :nodejs 可以理解为可以执行 js 的bash

### 设置环境变量并持久化保存至 `~/.bashrc` 文件 为了确保环境变量能够被永久设置并在每次启动 Bash 时自动加载,可以按照如下方法操作: 将新的环境变量追加到用户的 `.bashrc` 文件中,并立即应用这些更改。这可以通过 Shell 脚本来实现。 #### 追加环境变量到 `.bashrc` 下面是一个简单的例子,展示如何向 `~/.bashrc` 中添加一个新的环境变量 `DOCKER_BUILDKIT=0`[^4]: ```bash echo "export DOCKER_BUILDKIT=0" >> ~/.bashrc ``` 这段命令会把字符串 `"export DOCKER_BUILDKIT=0"` 添加到文件末尾,从而使得该环境变量可以在未来的任何新启动的交互式非登录 shell 下可用。 #### 应用修改后的配置 为了让刚刚加入的环境变量立刻生效而不必重新登录或重启终端,可使用 `source` 命令读取并执行 `.bashrc` 文件里的指令: ```bash source ~/.bashrc ``` 此命令会使当前 session 加载最新的 `.bashrc` 配置,包括刚才新增的那个环境变量定义。 #### 使用自定义函数简化流程 对于更复杂的场景或是频繁更新多个环境变量的情况,还可以创建一个辅助函数来自动化这个过程。例如,在 `.bashrc` 或其他初始化脚本里定义这样一个函数[^3]: ```bash function set_env_var() { local var_name=$1 local value=$2 # Check if the variable is already defined in .bashrc to avoid duplicates. grep -qxF "export ${var_name}=${value}" ~/.bashrc || \ echo "export ${var_name}=${value}" >> ~/.bashrc export "${var_name}=${value}" } ``` 之后就可以调用此函数轻松地为任意数量的新环境变量做同样的事情了: ```bash set_env_var MY_VARIABLE 'my_value' ``` 这样不仅可以让管理变得更加方便高效,而且也减少了手动编辑配置的风险。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值