Linux 桌面应用启动 IntelliJ IDEA 环境变量失效

今天折腾了最新的 deepin v23 系统,打算安装一下 IntelliJ IDEA.jetbrains.vmoptions.sh 脚本配置在命令行中测试有效,解压缩后直接在命令行打开没有问题。

接着就打算创建桌面应用,大概如下:

java 复制代码
[Desktop Entry]
Name=IntelliJ IDEA
Comment=IntelliJ IDEA
Exec=xxxx/idea
Icon=xxxx/idea.svg
Terminal=false
Categories=Development
Type=Application

然后将其放置 /usr/share/applications/ 目录下,也增加了执行权限,但是双击打开后发现,上面的.jetbrains.vmoptions.sh 脚本配置没生效。

再然后,我想看一下控制台有没有什么提示,就将 Terminal=true ,双击运行后,发现又生效了!

查了一下资料才知道:

  • Terminal=false:
    当设置为false时,桌面环境会直接执行Exec指定的命令,而不通过终端。
    这通常意味着脚本在一个非交互式的、非登录shell中运行,因此不会读取.profile或.bashrc等启动文件。
    因此,如果环境变量在这些文件中设置,它们不会被加载到脚本的环境中。
  • Terminal=true:
    当设置为true时,桌面环境会启动一个新的终端来运行Exec指定的命令。
    新终端通常会启动一个登录shell,这会读取并执行用户的启动文件,如.profile或.bashrc。
    因此,脚本在执行时会包含这些启动文件中定义的环境变量。

所以最终需要在 desktop 文件的执行命令中,使其加载整个环境:

java 复制代码
Exec=bash -l -c "xxxx/idea"
相关推荐
云烟成雨TD2 分钟前
Spring AI Alibaba 1.x 系列【28】Nacos Skill 管理中心功能说明
java·人工智能·spring
升鲜宝供应链及收银系统源代码服务3 分钟前
OMS 订单模块重构正式文档(一)---升鲜宝生鲜配送供应链管理系统
java·开发语言·重构·生鲜配送源代码·生鲜供应链源代码
Han.miracle8 分钟前
Redis 全套笔记:基础 API + 三大架构 + 缓存三大问题
java·windows·redis
zzb158010 分钟前
Fragment 生命周期深度图解:从 onAttach 到 onDetach 完整流程(面试必备)
android·java·面试·安卓
银色火焰战车30 分钟前
浅析golang中的垃圾回收机制(GC)
java·jvm·golang
zhangjw3432 分钟前
第4篇:Java数组与字符串:从基础用法到面试高频考点
java·java基础知识
俺爱吃萝卜40 分钟前
Spring Boot 3 + JDK 17:新一代微服务架构最佳实践
java·spring boot·架构
曹牧1 小时前
Spring :component-scan
java·后端·spring
feng_you_ying_li1 小时前
linux之运行状态(2),内核链表与进程状态
linux
下地种菜小叶1 小时前
定时任务系统怎么设计?一次讲清任务注册、分布式调度、幂等执行与失败补偿
java·开发语言·数据库·oracle·rabbitmq