当前位置: 首页 > news >正文

Shell脚本波浪号避坑指南

在 Shell 脚本中,~(波浪号)的解析规则需要注意:双引号包裹时,~不会被自动解析为用户家目录,直接写BASE_DIR="~/apps"会导致路径变成字面量的~/apps而非实际的家目录路径(比如/home/xxx/apps)。

以下是正确定义并切换到用户家目录下 apps 目录的几种方法,按推荐优先级排序:

方法 1:用$HOME环境变量(最推荐)

$HOME是 Shell 内置的环境变量,直接指向当前用户的家目录,不受引号解析规则影响,兼容性最好:

#!/bin/bash # 定义家目录下的 apps 路径(兼容所有 Shell 场景) BASE_DIR="$HOME/apps" # 切换到该目录(推荐加容错:目录不存在则创建) cd "$BASE_DIR" || { echo "目录 $BASE_DIR 不存在,正在创建..." mkdir -p "$BASE_DIR" cd "$BASE_DIR" || exit 1 # 仍失败则退出脚本 } # 验证当前目录 echo "当前目录:$(pwd)"

方法 2:先解析~再赋值(适合习惯用~的场景)

如果非要用~,需要让 Shell 先解析它(不包裹在双引号里),再赋值:

#!/bin/bash # 注意:~ 不在双引号内,先被解析为家目录,再拼接 apps BASE_DIR=~/"apps" # 切换目录(同上,加容错) cd "$BASE_DIR" || { mkdir -p "$BASE_DIR" && cd "$BASE_DIR"; } echo "当前目录:$(pwd)"

方法 3:用 eval 强制解析(不推荐,仅作了解)

eval可以强制解析字符串中的~,但存在安全风险(若路径含特殊字符可能被注入),仅适合特殊场景:

#!/bin/bash # 先定义字面量路径,再用 eval 解析 ~ BASE_DIR="~/apps" eval BASE_DIR="$BASE_DIR" # 解析后 BASE_DIR 变为 /home/xxx/apps # 切换目录 cd "$BASE_DIR" || exit 1 echo "当前目录:$(pwd)"

关键注意事项

  1. 引号规则
    • 单 / 双引号内的~会被当作普通字符,不会解析为家目录;
    • 无引号 / 仅部分包裹时(如~/"apps"),~会被正常解析。
  2. 容错处理cd命令后加||处理目录不存在的情况,避免脚本报错中断;
  3. 跨用户兼容$HOME会自动适配当前执行脚本的用户(比如 root 用户的$HOME/root),无需硬编码路径。

测试验证

执行脚本后,若输出类似当前目录:/home/你的用户名/apps(或/root/apps,若以 root 执行),则说明路径定义和切换成功。

http://www.cnnetsun.cn/news/72584.html

相关文章:

  • macOS菜单栏智能管理解决方案:Ice工具深度解析
  • 2025年八大网盘直链下载完整指南:快速获取真实下载地址
  • 如何快速掌握Py-ART:气象雷达数据处理的完整实战指南
  • HuggingFace镜像网站推荐列表:国内高速下载Seed-Coder-8B-Base
  • 12、支持向量机与核分类算法详解
  • 快速掌握ZonyLrcToolsX:歌词下载的终极操作指南
  • VMware macOS虚拟机终极解锁指南:免费安装苹果系统的完整教程
  • 强力Cookie管理技巧:Get-cookies.txt-LOCALLY让数据安全触手可及
  • Live2D AI智能助手:重塑网页交互体验的革命性技术
  • Seed-Coder-8B-Base在Python项目中的函数生成能力实测
  • 《游戏活动效能升级与服务器压力精益管理的实战指南》
  • Maccy剪贴板管理器:macOS系统兼容性深度解析
  • 轮毂分类检测数据集介绍-855张 汽车制造质检 车辆维护和检测 智能交通系统 二手车评估 自动驾驶识别模块 工业机器人视觉系统
  • LangChain函数调用增强Qwen3-VL-30B的外部工具执行能力
  • 乳牛皮肤疾病检测数据集介绍-56张图片 智能养殖管理 农业疾病诊断辅助 畜牧业健康监控 图像分类模型训练与评测 教育与科研
  • 企业AI落地全攻略:从零代码到安全合规,开发者和管理者都该收藏的实战指南
  • 42、深入了解Xenomai实时系统:特性、架构与应用
  • 如何在浏览器中3分钟搞定串口调试?波特律动串口助手超详细使用指南
  • 5分钟搞定智慧树插件:让你的网课学习效率翻倍
  • 北大学者带你拖拽3D物体,像玩拼图一样让虚拟世界动起来
  • Vscode调试Python脚本运行ACE-Step:快速定位错误
  • PyTorch JIT编译提升Stable Diffusion 3.5 FP8运行效率可行性研究
  • QQ音乐数据获取Python工具完整使用指南
  • Visual Studio中的字典
  • ROG主板隐藏温度监控功能:快速激活T Sensor的实用指南
  • Vue大屏自适应终极解决方案:从适配难题到完美展示
  • 【建议收藏】小白进阶必备:RAG知识库构建实战指南与技巧
  • 开源新星:Seed-Coder-8B-Base助力PyCharm社区版实现智能编程
  • 分布式消息队列kafka【四】—— 消费者进阶提升
  • HunyuanVideo-Foley实战教程:结合HTML与JavaScript实现实时音效预览