请人代做谷歌外贸网站,目前主流网站开发所用软件,微信网站页面,网站后台可视化编辑唠唠闲话
概要#xff1a;在不同的Shell环境#xff08;如Bash和Zsh#xff09;中设置环境变量、设置初始脚本#xff0c;以及如何根据不同的使用场景#xff08;用户级或系统级#xff09;管理和设置初始运行命令。
p.s. 如果你很熟悉 Linux#xff0c;推荐跳到最后一…唠唠闲话
概要在不同的Shell环境如Bash和Zsh中设置环境变量、设置初始脚本以及如何根据不同的使用场景用户级或系统级管理和设置初始运行命令。
p.s. 如果你很熟悉 Linux推荐跳到最后一节。这些对多用户场景很有帮助比如设置全局生效的 Conda/Cuda 路径快捷别名等。
小知识
在终端运行可执行文件时通常不需要输入完整路径比如运行 Python 输入 python 而不是 /usr/bin/python。通过执行 which 可以查看实际执行文件的路径。
一些基础命令比如 pwd, echo, source, which用 which 查询会提示你是内置命令(built-in command)。
而大多数命令比如 git, vim, nginx 等等都是执行省略了文件路径的可执行文件。更具体地执行 git 时系统会在 PATH 给的路径中依次查找如果存在该可执行文件则运行。
因此如果要省略绝对路径来执行某个文件可以将该路径添加到 PATH 中。
修改 PATH
习惯上可以将 $HOME/.local/bin 添加到环境变量 PATH 中然后可执行文件存放或者链接到该目录
# 创建目录
mkdir -p $HOME/.local $HOME/.local/bin然后在 .bashrc/.zshrc 中添加如下内容其中冒号用于分隔路径
export PATH$HOME/.local/bin:$PATH脚本生效级别
除了修改用户级别的 ~/.bashrc, ~/.zshrc 还有其他根据不同情况生效的脚本。
用户启动 bash 时涉及的几个文件
文件作用/etc/environment系统级别的配置文件用于设置环境变量不支持 $ 语法/etc/profile全局配置脚本当一个用户 登录 并使用Bash或兼容的shell时这个文件会被执行。它经常用来设置环境变量和运行登录脚本。/etc/profile.d包含了一些脚本通常在执行 /etc/profile 的时候会被自动运行。它允许系统管理员把特定的初始化脚本分散到不同的文件中以便管理。/etc/bash.bashrc用于设置全局的Bash shell行为它在每次打开新的Bash shell时被读取。~/.bashrc用户级的Bash配置文件它在每次打开新的Bash shell时被读取。~/.bash_profile用户级的仅在Bash登录shell启动时被读取。比如用 ssh 登录服务器且默认 shell 为 bash 时会执行该文件。
用户启动 zsh 时涉及的几个文件
文件作用/etc/environment系统级别的配置文件用于设置环境变量不支持 $ 语法/etc/zsh/zshenv这是全局的Zsh环境配置文件无论何时启动Zsh都会被读取。通常用来设置环境变量。/etc/zsh/zprofile全局配置脚本仅在Zsh的 登录 shell启动时被读取。它类似于/etc/profile用于登录时初始化设置。/etc/zsh/zshrc用于设置全局的Zsh行为它在每次打开新的Zsh shell时被读取类似于Bash的/etc/bash.bashrc。/etc/zsh/zlogin全局登录脚本它在Zsh登录shell启动时在读取zprofile之后被执行。/etc/zsh/zlogout全局登出脚本它在Zsh登录shell登出时被执行。~/.zshrc用户级的Zsh配置文件每次打开新的Zsh shell时被读取用于个人shell行为
简单说
用户级别的修改可以修改 ~/.bashrc 或 ~/.zshrc系统级别的变量可以修改 /etc/environment系统级别的脚本可以修改 /etc/bash.bashrc 或 /etc/zsh/zshrc系统级别且在登录生效的脚本可以修改 /etc/profile 或 /etc/zsh/zprofile
我们也可以手写一个脚本方便维护公共变量
# 维护公共脚本
sudo touch /etc/universal_rc
# 维护登录后的公共脚本
sudo touch /etc/universal_profile然后在 /etc/bash.bashrc 和 /etc/zsh/zshrc 中添加如下内容
if [ -f /etc/universal_rc ]; thensource /etc/universal_rc
fi以及在 /etc/profile 和 /etc/zsh/zprofile 中添加如下内容
if [ -f /etc/universal_profile ]; thensource /etc/universal_profile
fi