环境变量并不难懂
环境变量,是指操作系统运行环境中所使用的变量。
我们在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.json
的bin
设置,在/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版本
解压缩之后,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