前端进阶 – 环境变量与命令行工具

环境变量并不难懂

环境变量,是指操作系统运行环境中所使用的变量。

我们在bash中执行下列命令行:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
复制代码

Ubuntu terminal

这里的PATH就是最著名的环境变量,表示系统执行脚本命令时,搜索可执行命令的位置,这许多位置用:分隔。

其他常见的,还有JAVA_HOME之类的。

使用export修改环境变量

$ export PATH=/home/mk/cli
$ echo $PATH
/home/mk/cli
复制代码

然后尝试执行以下node

$ node
命令 'node' 可在 '/snap/bin/node' 处找到
由于/snap/bin 不在PATH 环境变量中,故无法找到该命令。
node:未找到命令
复制代码

但这个操作是session级别的,关闭即失效,也不会影响其他终端窗口。

使用bashrc持久化自定义环境变量

这里有个前提,就是你用的是bash。Mac如果已经改用zsh的话,需要操作~/.zshrc

~/.bashrc中追加一个累加命令:

# 创建或向文件中追加内容
$ echo "PATH=$PATH:/home/mk/cli" >> ~/.bashrc
# 令其生效
$ source ~/.bashrc
# 查看PATH变量
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/mk/cli
复制代码

可以看到cli目录已经在PATH中了,这个是用户级别的配置,不影响其他用户。

如果不用source命令,打开新的终端也会看到同样效果。

在cli中编写自己的工具

经过上面一波操作,/home/mk/cli已经在全局中被注册了,其中的可执行命令,也可以全局运行。

先写一个shell脚本

# 写入脚本内容到
$ echo "echo abc" >> abc.sh
# 创建一个软链接
$ ln -s abc.sh abc
复制代码

尝试运行abc

$ abc
bash: /home/mk/cli/abc: 权限不够
复制代码

我们是在用户目录中创建的cli,所以对bash而言没有权限。更改到777:

$ chmod -R 777 ~/cli
$ abc
abc
复制代码

编写可执行的JavaScript脚本

在cli中创建xyz.js文件,写入以下内容:

#!/usr/bin/env node
console.log('xyz')
复制代码

然后也像刚才一样,创建一个软链接:

$ ln -s xyz.js xyz
$ xyz
xyz
复制代码

执行成功。操作过程中多注意cli目录和文件的权限问题。

上面的过程,和npm install -g的原理是一样的:

  • 在全局node_modules中安装npm
  • 根据package.jsonbin设置,在/usr/local/bin中创建软链接

这里的/usr/local/bin就在PATH变量中,所以不需输入路径前缀,直接可以运行:

$ ls -l /usr/local/bin
总用量 0
create-react-app -> ../lib/node_modules/create-react-app/index.js
webpack -> ../lib/node_modules/webpack/bin/webpack.js
webpack-cli -> ../lib/node_modules/webpack-cli/bin/cli.js
复制代码

手动安装多版本node

看下当前的node版本

$ node -v
v14.17.1
复制代码

从官网下载最新v16版本

nodejs.org/dist/v16.4.…

解压缩之后,mv/usr/locat/etc里面。

这时候node16的执行命令路径为

/usr/local/etc/node-v16.4.0-linux-x64/bin/node
/usr/local/etc/node-v16.4.0-linux-x64/bin/npm
/usr/local/etc/node-v16.4.0-linux-x64/bin/npx
复制代码

验证一下

$ /usr/local/etc/node-v16.4.0-linux-x64/bin/node -v
v16.4.0
$ /usr/local/etc/node-v16.4.0-linux-x64/bin/npm -v
v7.18.0
复制代码

/usr/local/bin中创建软链接:

sudo ln -s /usr/local/etc/node-v16.4.0-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /usr/local/etc/node-v16.4.0-linux-x64/bin/npm /usr/local/bin/npm
sudo ln -s /usr/local/etc/node-v16.4.0-linux-x64/bin/npx /usr/local/bin/npx
复制代码

新开一个终端窗口,验证一下:

$ node -v
v16.4.0
$ npm -v
7.18.1
$ npx -v
7.18.1
复制代码

验证通过。以上。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享