Linux 双击sh脚本运行无反应或一闪而退【已解决】

这里写目录标题

  • 一、问题描述
  • 二、解决思路
    • 1. 开启终端,使用命令行运行.sh脚本文件
    • 2. 终端中运行可以,但双击之后运行闪退 (遇到了个这个奇奇怪怪的问题)
  • 三、分析记录
    • 3.1 .bashrc设置变量的作用域
    • 3.2 环境变量冲突覆盖问题.
  • 四、相关知识点
    • 4.1 环境变量配置.bashrc和.bash_profile(.profile)文件区别
    • 4.2 export命令
    • 4.3 Ubuntu中设置双击后运行shell脚本

一、问题描述

  • 如题:在Linux环境下(Redhat 和 Ubuntu),双击可执行的.sh文件,点击 Execute 或者 Execute in Terminal 没反应,或者有时能看到一个小黑框一闪而过.
    在这里插入图片描述
    在这里插入图片描述

二、解决思路

一般情况下都是.sh脚本中代码bug,或者环境变量有问题.

1. 开启终端,使用命令行运行.sh脚本文件

  • 不要直接双击sh运行,而是先开终端,使用./xxx.sh运行脚本文件
  • 报错不会闪退,会在终端打印相关问题,依此排查

2. 终端中运行可以,但双击之后运行闪退 (遇到了个这个奇奇怪怪的问题)

  • 可先排查.bashrc文件中是否配置有误. (当登录时以及每次打开新的shell时,该文件被读取)
  • 是否已经设置好变量:.bashrc设置的变量如果不export,只在终端中生效,在脚本中无法调用
  • 也可能在多个文件中设置了相同的变量,导致冲突、覆盖等. 双击运行脚本 - 即便选择 run in termial - 可能也不会调用.bashrc

三、分析记录

奇怪的问题:打开终端可以./xx.sh运行脚本,但是双击就闪退,或者根本无反应. 做了个简单的测试:

3.1 .bashrc设置变量的作用域

    1. 在.bashrc中添加如下代码,同时新建一个cs.sh脚本,输出bashrc_CS的值:
      在这里插入图片描述
bashrc_CS="bashrc_CS"
#!/bin/bash
echo "$bashrc_CS"
    1. 开启终端,在终端中可正常输出"$bashrc_CS",但是脚本中为空。
      在这里插入图片描述

3.2 环境变量冲突覆盖问题.

    1. 在.bash_profile(.profile)和.bashrc中添加如下代码:
CS="profile_CS"
export CS
CS="bashrc_CS"
    1. 写一个测试脚本,比较在终端中运行和双击后运行的结果:
      在这里插入图片描述
    1. 双击运行cs.txt中显示的是profile_CS,在终端中运行显示bashrc_CS

至此,之前双击运行脚本闪退的原因已找到. 双击运行和在终端中运行还是有差别的

  • 初步结论:双击之后运行可能不会调用.bashrc文件。

四、相关知识点

4.1 环境变量配置.bashrc和.bash_profile(.profile)文件区别

linux系统中的profile、bashrc、.bash_profile、.bashrc等文件之间的区别和联系以及执行的顺序:https://blog.csdn.net/weixin_46356409/article/details/132850396

.bashrc和.bash_profile是用于配置环境变量的文件,.bashrc文件用于设置个性化的Bash环境,而.bash_profile文件用于设置全局的环境变量和配置:

  1. .bashrc文件是在交互式非登录的Bash会话中执行的。当用户启动一个新的终端会话时,.bashrc文件中的命令将被执行。这些命令通常用于设置用户的个性化Bash环境,如别名、函数、自定义提示符等。.bashrc文件通常位于用户主目录下。
  2. bash_profile文件是在登录的Bash会话中执行的。当用户登录到操作系统时,会执行.bash_profile文件中的命令。与.bashrc不同,.bash_profile文件只会执行一次,在登录期间的所有终端会话中都会生效。通常,.bash_profile文件用于设置用户的全局环境变量,如PATH变量、系统级别的别名等。.bash_profile文件同样位于用户主目录下。

4.2 export命令

Linux export命令:https://www.cnblogs.com/eason66-blog/p/linux-export.html

4.3 Ubuntu中设置双击后运行shell脚本

修复在Ubuntu中shell脚本用文本编辑器打开的方式:https://www.cnblogs.com/linuxpro/p/17741950.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS详解(一)

1、css工作中使用场景 美化网页(文字样式、背景样式、边框样式、盒子模型、定位、动画、),布局页面(flex布局、响应式布局、媒体查询) 2、CSS 规则 通常由两个主要部分组成选择器和样式声明 2.1选择器 选择器指定了…

C语言-用二分法在一个有序数组中查找某个数字

1.题目描述 有15个数按由大到小顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数” 二.思路分析 记录数组中左边第一个元素的下标为left,记录数组右边第一个…

Spring AI聊天功能开发

一、引入依赖 继承父版本的springboot依赖&#xff0c;最好是比较新的依赖。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePat…

【JavaScript】转化为布尔值boolean的几种情况

1 转化为布尔值boolean时为false的6种情况 下面6种值转化为布尔值时为false&#xff0c;其他转化都为true&#xff1a; 1、undefined2、null&#xff08;代表空值&#xff09;3、0&#xff08;数字0布尔值为false&#xff0c;字符串"0"布尔值为true) (数字0转布尔类…

C++笔试强训day10

目录 1.最长回文字符串 2.买卖股票的最好时机(一) 3.过河卒 1.最长回文字符串 链接 一开始没认真看题目&#xff0c;直到提交了好几遍没过还是没去检查题目&#xff0c;一直检查代码逻辑&#xff0c;哎呦&#xff0c;难受了。 我以为是收尾字母相同就行了。 错误代码&…

为什么二维数组初始化第一维数组长度可以为空,第二维不可以为空呢?

注意&#xff0c;数组第二维的长度声明永远不能省略。这是因为C语言中的二维数组元素在c编译程序为其分配的连续存储空间中是按行存放的&#xff0c;即存在完整第一行后存第二行&#xff0c;然后再第三行&#xff0c;以此类推。存放时系统必须知道每一行有多少个元素才能正确计…

一文讲解Android车载系统camera架构 - EVS

Android的camera开发中&#xff0c;使用最多的是camera2 以及现在Google主推的cameraX 架构&#xff0c;而这两个架构主要针对的是手机移动端上camera的流程。 而今天介绍的EVS(Exterior View System)架构是不同于camera2上的手机架构&#xff0c;针对Automotive的版本&#x…

软文伪原创工具有哪些,推荐3款强大的软文伪原创工具

软文作为一种重要的营销和传播手段&#xff0c;受到了越来越多的关注。而随着科技的不断发展&#xff0c;各种软文生产的工具相续出现&#xff0c;如&#xff1a;软文伪原创工具&#xff0c;它能为人们提供便捷、高效的文章生产方式&#xff0c;也及可以节省文章写作的时间与精…

车载系统的 加减串器应用示意

overview 车载系统上使用加减串器来实现camera&#xff0c; led液晶显示屏等 图像数据的远距离传输&#xff0c;将原先在短距离传输视频信号的mipi csi&#xff0c;dsi 等的TX&#xff0c;RX中间&#xff0c;插入加减串器&#xff0c;实现长距离的可靠传输。 示意图如下 往往…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model&#xff1a;负责数据存储 View&#xff1a;负责页面展示 View Model&#xff1a;负责业务逻辑处理&#xff08;比如Ajax请求等&#xff09;&#xff0c;对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率&#xff1a;…

图像处理:乘法滤波器(Multiplying Filter)和逆FFT位移

一、乘法滤波器&#xff08;Multiplying Filter&#xff09; 乘法滤波器是一种以像素值为权重的滤波器&#xff0c;它通过将滤波器的权重与图像的像素值相乘&#xff0c;来获得滤波后的像素值。具体地&#xff0c;假设乘法滤波器的权重为h(i,j)&#xff0c;图像的像素值为f(m,…

Cranck-Nicolson隐式方法解线性双曲型方程

Cranck-Nicolson隐式方法解线性双曲型方程 Cranck-Nicolson方法在抛物型方程里面比较常用&#xff0c;双曲型方程例子不多&#xff0c;该方法是二阶精度&#xff0c;无条件稳定&#xff0c;然而&#xff0c;数值震荡比较明显&#xff0c;特别是时间演化比较大以及courant数比较…

网工内推 | 云计算运维,厂商云相关认证优先,股票期权,全勤奖

01 国科科技 招聘岗位&#xff1a;云计算运维 职责描述&#xff1a; 1、负责私有云平台的运维管理工作,包括云平台日常运维、故障处理、扩容、版本升级、优化和维护等。 2、根据业务需求,从技术角度支持及配合各业务系统上云工作。 3、为云上业务系统提供云产品、云服务方面的…

python ERA5 画水汽通量散度图地图:风速风向矢量图、叠加等高线、色彩分级、添加shp文件、添加位置点及备注

动机 有个同事吧&#xff0c;写论文&#xff0c;让我帮忙出个图&#xff0c;就写了个代码&#xff0c;然后我的博客好久没更新了&#xff0c;就顺便贴上来了&#xff01; 很多人感兴趣风速的箭头怎样画&#xff0c;可能这种图使用 NCL 非常容易&#xff0c;很多没用过代码的小…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…

idea的插件,反编译整个jar包

idea的插件&#xff0c;反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下&#xff1a;2.2 选中jar包&#xff0c;点出右键 3.不用插件&#xff0c;手动查看某一个java类3.1 选中jar包&#xff0c;点出右键 1.安装插件 1.1找到插…

Linux网络编程---Socket编程

一、网络套接字 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现。) 在通信过程中&#xff0c;套接字一定是成对出现的 套接字通讯原理示意图&#xff1a; 二、预备知识 1. 网络字节序 内存中的多字节数据相对于内存地址有大端和小端之分 小端法&…

同事上班这样摸鱼,我坐边上咋看他都在专心写代码啊

我边上有个同事&#xff0c;我坐他边上&#xff0c;但是每天看着他都眉头紧锁&#xff0c;忙的不亦乐乎&#xff0c;但终于有一天&#xff0c;我发现了他上班摸鱼的秘诀。 我劝你千万不要学会这4招&#xff0c;要不就该不好好上班了。 目录 1 上班看电影&#xff1f; 2 上班…

自建SQL server 服务无法启动,提示评估期已过

问题背景 在服务器内安装的SQL server无法启动&#xff0c;报错提示如下截图&#xff0c;提示错误代码17051&#xff1a; 结合系统日志查看应用程序日志详情提示评估期已过&#xff0c;报错如下 问题原因 出现此报错原因是SQL server 安装时&#xff0c;使用的评估版本&#xf…

网络安全的防护措施有哪些?

1. 安全策略和合规性 2. 物理和网络安全 3. 数据加密 4. 软件和系统更新 5. 访问控制 6. 威胁监测和响应 7. 员工培训和安全意识 8. 备份和灾难恢复 零基础入门学习路线 视频配套资料&国内外网安书籍、文档 网络安全面试题 网络安全的防护措施多种多样&#xff0c…