浅析 -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

posted @ 2018-06-26 22:56  古兰精  阅读(5380)  评论(0编辑  收藏  举报