bash - 为什么我根本不能使用触摸?
问题描述
我有这个基本上需要添加的脚本
alias www-owns-assets="sudo chown www-data public/assets -R"
如果此行(或此文件)不存在,则转到 ~/.bash_aliases。
这是脚本:
ls ~/
LINE='alias www-owns-assets="sudo chown www-data public/assets -R"'
FILE='~/.bash_aliases'
touch $FILE
grep -qsFx -- "$LINE" $FILE || echo "$LINE" >> $FILE
该touch
行引发错误:
touch: cannot touch '~/.bash_aliases': No such file or directory
即使 ls ~/ 工作正常。我究竟做错了什么?(我试过带引号和不带引号 - 但也许不是正确的。
解决方案
的使用~
是不可靠的,它可能适用于脚本,也可能不适用于脚本,并且~
如果引用(单引号或双引号)则不会扩展。尝试$HOME
改用。
FILE=$HOME/.bash_aliases
...或删除引号。
FILE=~/.bash_aliases
- 但就像我所说的那样,最好使用
$HOME
. - 作为旁注,避免在纯粹出于内部目的的变量上使用大写字母。
推荐阅读
- c++ - 38:10:错误:成员引用基类型“节点 *”不是结构或联合 *prev->next = temp;
- android - FirebaseAuth Facebook 登录返回黑屏
- javascript - D3.js - 使用 JSON 对象数据的正负条形图
- amazon-web-services - 如何将使用 AWS Amplify 作为后端的前端部署到生产环境
- r - 在R中将字符月列转换为年月格式
- r - 使用 R 在多个时间范围内求和
- java - 具有已定义行的 Oracle 嵌套选择
- django - 如何为每个用户制作个人资料
- spring-boot - 在 Springboot 中使用 Retrofit (Retrofit2) 客户端 (Kotlin) 实现双向 TLS
- mysql - Mysql 连接器 8.0 和 Python 3.8