浅析 -bash: ./install.sh: Permission denied 的问题、/usr/bin/env: 'bash\r': No such file or directory 的问题
一、解决 -bash: ./install.sh: Permission denied 的问题
最近在搭建项目的时候,遇到了一个问题,我做了一个.sh脚本用来批量执行sql,但是当我执行的时候提示
-bash: ./install.sh: Permission denied
这个是执行的权限不足,试了几个办法都没有解决,最后尝试了这个
解决方案:使用 root 账号,到目标脚本的文件夹,执行
chmod 777 ./*.sh
将所有脚本文件改为了可执行文件,执行这个命令后,原脚本 .sh 文件就变成绿色的可执行文件了
最后解决了这个问题
二、解决 /usr/bin/env: 'bash\r': No such file or directory 的问题
先说结论:这个是由于windows格式的shell多了个 \r,需要替换掉就可以了。
或者在 linux 环境重写对应的 shell
1、问题背景:
我从 windows 上 git clone 下载的源代码,上面就有上图的那些文件,压缩之后上传到 linux 服务器去的。
起初所有脚本文件都是白色的,故没有执行权限,报错第一步的问题
第一步的问题解决后,执行文件又报错这个问题,所以需要在 linux 环境 git clone 这个代码就行了
2、这个问题可以看下这个描述:https://stackoverflow.com/questions/29045140/env-bash-r-no-such-file-or-directory
解答:错误消息表明您正在调用的脚本已嵌入\r
字符,这反过来表明它具有Windows 样式的\r\n
行尾,而不是预期的\n
-only 行尾bash
。
作为快速修复,您可以删除\r
字符。如下:
sed $'s/\r$//' ./install.sh > ./install.Unix.sh
然后运行
./install.Unix.sh --clang-completer
但是,更大的问题是为什么您最终会使用 \r\n
-style 文件 - 很可能其他文件也会受到影响。
也许您在 Windows 上运行 Git,其中典型的配置是将 Unix 样式的-only\n
换行符转换为 Windows 样式的\r\n
换行符,然后重新转换为-only\n
换行符。
虽然这对于在 Windows上进行开发是有意义的,但它会妨碍像这样的安装场景。
要让 Git在Windows 上签出具有 Unix 风格文件结尾的文件- 至少是暂时的 - 使用:
git config --global core.autocrlf false
git clone,然后再次运行涉及的安装命令。
要稍后恢复 Git 的行为,请运行git config --global core.autocrlf true