# bash 自启动文件:
- 系统级初始化文件:/etc/profile
- 登陆用户特定初始化文件:~/.bash_profile
- bash 初始化文件:~/.bashrc
各初始化文件的执行优先级顺序:
交互登录shell | 交互非登录shell | 脚本 | |
/etc/profile | A | ||
/etc/bash.bashrc | A | ||
~/.bashrc | B | ||
~/.bash_profile | B1 | ||
~./bash_login | B2 | ||
~/.profile | B3 | ||
source $BASH_ENV | A | ||
logout only | |||
~/.bash_logout | C |
例如操作一个交互式登录的shell,那么就会先执行/etc/profile 文件,之后寻找B中的三个文件,找到一个则停止寻找,并执行找到的文件,(优先级为B1,B2,B3),再之后寻找C文件;
由上表可以看到登录和非登录shell的初始化文件是完全错开的,所以会产生一个问题:当从非登陆shell进到登录shell后,之前配置在非登录shell初始化文件中的内容将不再生效(反之同理);为避免出现这种情况,一般会在bash_profile文件中显式加载bashrc,这样可以加载非登录shell中设置的环境变量等信息,用来使用;
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
# zsh自启动文件
- 系统级初始化文件 /etc/zprofile
- 登陆用户特定初始化文件 ~/.zprofile
- shell 初始化文件 ~/.zshrc
各初始化文件的执行优先级顺序:
交互登录 | 非交互登录 | 脚本 | |
/etc/zshenv | A | A | A |
~/.zshenv | B | B | B |
/etc/zprofile | C | ||
~/.zprofile | D | ||
/etc/zshrc | E | C | |
~/.zshrc | F | D | |
/etc/zlogin | G | ||
~/.zlogin | H | ||
~/.zlogout | I | ||
/etc/zlogout | J |
# PATH 环境变量
- PATH 变量是一个路径列表,以 : 隔开
- 如果可执行程序所在的目录在PATH变量的路径列表里,那么输入命令时可以省略路径
- 路径列表前面的路径为优先匹配路径,可以用来实现新老版本程序的命令更换
环境变量列表:
通过which ls我们可以看到ls命令所在的/bin目录在环境变量的列表里,所以我们可以直接使用ls命令,也可以使用/bin/ls来使用,如果不在环境变量的列表,我们只能/bin/ls来使用;
环境变量常见问题:
1. python2 和python3的指定问题:
可能会遇到安装了python3,但是系统还是默认使用python2,这时我们就可以使用which python的命令来找到系统当前使用的python是哪个路径下的python,然后将python3覆盖放在当前路径下即可将系统的默认python更换为python3,也可以打印出系统的环境变量后,查看当前python路径在环境变量中的位置,将python3放在比当前python路径更靠前的路径中,系统在读取时就会优先读取到python3所在的路径;
2. 安装过的命令找不到问题:
将所安装命令的bin目录添加到环境变量中即可;
PATH变量的使用:
export CHROMEDRIVER_HOME=$HOME/projects/chromedriver/91
export PATH=$CHROMEDRIVER_HOME:$PATH
export VSCODE_HOME=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin
export PATH=$VSCODE_HOME:$PATH
export SONAR_HOME=/usr/local/Cellar/sonar-scanner/4.2.0.1873
export PATH=$SONAR_HOME/bin/:$PATH
export SONARQUBE_TOKEN=c7a93fb6bb1e3268f7099b0f26672ba43c117bb9
export ANDROID_HOME=$HOME/Library/Android/sdk/
export PATH=$ANDROID_HOME/emulator/:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:~/bin/:$PATH
# 应用安装
- 使用平台自带的app store
- yum @centos/redhat
- apt-get @ubuntu debian
- scoop winget @windows
- 特定平台版本管理工具 pyenv nvm
- 安装包安装 pkg dmg
- 源码编译安装 make make install
平台自带app store安装示例:
centos/redhat:
- yum search $package
- yum install $package
- yum remove $package
ubuntu/debian:
- apt-cache search $package
- apt-get install $package
- apt-get uninstall $package
源码安装实例:
#提前安装对应的各种开发库依赖,每个版本的要求可能都不同
curl -O https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz 下载源码
tar -zxvf Python-3.10.0.tgz 解压源码
cd Python-3.10.0 切换到解压的源码目录
./configure make 对源码进行编译
sudo make install 安装编译好的程序
开源镜像站
-
华为:https://mirrors.huaweicloud.com/
- 阿里云:https://developer.aliyun.com/mirror/
# nodejs 环境配置
- nodejs:https://nodejs.org/zh-cn/
- npm:node 的包管理工具
- cnpm:国内镜像版客户端
npm包管理工具使用:
npm install -g $package -g 安装模块到全局,可以作为系统命令去调用,不会在项目node_modules目录中保存模块包
npm list -g 查看已安装的全局包
npm uninstall $package
npm install 安装模块到项目node_modules目录下 (常用于项目管理)
centos java 多版本配置
sudo alternatives --list # 查看所有安装的java工具
sudo alternatives --config java # 设置默认的java版本
mvn 常用命令
mvn clean test
mvn package install
mvn test -DskipTests
mvn clean \
org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent \
test \
org.jacoco:jacoco-maven-plugin:0.8.5:report \
-Dmaven.test.failure.ignore=true \
-Dmaven.test.skip=false
mvn编译项目
git clone https://github.com/spring-guides/gs-spring-boot.git
cd gs-spring-boot/complete
mvn package
java -Dserver.port=8888 -jar target/spring-boot-complete-0.0.1-SNAPSHOT.jar
#SERVER_PORT=8888 mvn spring-boot:run
maven 的配置
- The Maven install: ${maven.home}/conf/settings.xml 全局配置文件 MAVEN安装目录下的conf下的settings.xml文件
- A user’s install: ${user.home}/.m2/settings.xml 用户配置文件 用户目录下的m2/settings.xml文件 (可能没有)
Android SDK 路径配置
#*unix,长期使用放入到~/.bash_profile中
#ANDROID_HOME官方不推荐使用,但是仍然生效
#export ANDROID_HOME=/Users/seveniruby/Library/Android/sdk
export ANDROID_SDK_ROOT=/Users/seveniruby/Library/Android/sdk
export PATH=$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/tools/bin:$PATH
#windows 长期使用放入到系统属性里
set ANDROID_SDK_ROOT=E:\Android\sdk\
java 下载地址
- java https://www.java.com/zh-CN/
- oracle jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html
- openjdk https://openjdk.java.net/
centos java 安装
yum search jdk
yum install -y java-11-openjdk
centos java 多版本配置
sudo alternatives --list
sudo alternatives --config java
当存在多个java版本时,使用sudo alternatives --list 查看所有的java版本,
然后使用sudo alternatives --config java 来选择要使用的java版本;