深色模式
环境变量 PATH/profile
摘要:写了个好用的脚本,却总要打全路径?本文教你把它放进自定义目录,加入 PATH,并让每次登录都自动生效。前提:有自己可写的家目录,理解
~即家目录。
适用环境
bash
echo $SHELL # 看当前 shell,常见 /bin/bash
echo $PATH # 当前命令搜索路径
mkdir -p ~/bin # 准备一个放个人命令的目录1
2
3
2
3
一、理解 PATH 怎么工作
bash
# 输入命令时,系统按 PATH 里的目录从左到右查找可执行文件
# 例如 PATH=/usr/local/bin:/usr/bin:/bin
# 把自己目录加到前面可"覆盖"系统同名命令(谨慎)1
2
3
2
3
二、临时加入 PATH(当前会话)
bash
export PATH="$HOME/bin:$PATH"
echo $PATH # 确认 ~/bin 已在最前
# 仅当前终端有效,关掉就失效1
2
3
2
3
三、永久生效(写入 profile)
注意
用户级改 ~/.bashrc(仅该用户、交互 shell 生效);系统级改 /etc/profile.d/*.sh(全部用户)。普通用户改自己的即可。
bash
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc # 立即生效,无需重开终端
# 验证:新开终端也生效1
2
3
2
3
四、放一个自定义命令测试
bash
cat > ~/bin/hello <<'EOF'
#!/bin/bash
echo "hello from my bin"
EOF
chmod +x ~/bin/hello
hello # 任意目录直接敲 hello 即可运行1
2
3
4
5
6
2
3
4
5
6
验证
- [ ]
echo $PATH含~/bin(显示绝对路径如/root/bin) - [ ] 新开终端后
hello仍可直接执行 - [ ]
which hello指向~/bin/hello
常见坑
- 改错文件不生效:非登录 shell 可能不读
.bash_profile,把 export 放.bashrc更稳。 - PATH 写成覆盖:
export PATH="$HOME/bin"(漏掉:$PATH)会清空原 PATH,命令全失灵,用绝对路径救。 - zsh 用户:配置在
~/.zshrc而非.bashrc。 - 目录没加执行权限:脚本忘了
chmod +x,会报 permission denied。