0
点赞
收藏
分享

微信扫一扫

Circuits--Sequential--Finite_2

东林梁 2024-04-28 阅读 8

这里写目录标题

一、问题描述

  • 如题:在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

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

四、相关知识点

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

4.2 export命令

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

举报

相关推荐

0 条评论