浅析 -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 @   古兰精  阅读(6482)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2017-06-26 浅析如何利用逐帧动画配合补间动画实现一个无限循环的文字及图片轮播效果
点击右上角即可分享
微信分享提示