为 Linux GUI 应用程序设置 PATH

为 Linux GUI 应用程序设置 PATH

设置如下:

  • 我正在运行 MX Linux
  • 我正在尝试在 Android Studio 中开发 React Native 应用程序
  • React Native 依赖 NodeJS(因此node可执行文件)
  • Android Studio 通过 shell 脚本启动(studio.sh
  • 我使用一个名为 NodeJS 的版本管理工具asdf,它设置了垫片以将node可执行文件重定向到版本控制的版本
  • 通常情况下,重定向命令的垫片node会在内部加载~/.bashrc(或者在我的情况下,~/.zshrc因为我使用 zsh shell)
  • 当我进入终端并输出时$PATH,我的垫片被加载到那里并显示在PATH
  • 当我通过我的.desktop文件(其执行行如下所示:)Exec=/home/myuser/android-studio/bin/studio.sh运行Android Studio 时无法找到node可执行文件
  • 似乎我正在使用的 Linux 发行版 (MX Linux) 将dash其用作默认 shell
  • 如果我运行cat /proc/<PID>/environAndroid Studio PID,我会注意到PATH缺少垫片
  • 我试过了:
    • 修改桌面文件中的 Exec 行以运行bash /home/myuser/android-studio/bin/studio.sh
    • 修改 Exec 行以添加其他 PATH 值,例如env PATH="$HOME/.asdf/shims" /home/myuser/...
    • 使用~/.profile垫片值设置 PATH

我尝试了所有能想到的方法来将这些 PATH 值传递给 Android Studio shell 脚本,但似乎都不起作用。对我来说,唯一有效的方法是从终端启动 Android Studio,然后 PATH 被继承(我假设)并且它可以找到node可执行文件。

我在这里遗漏了什么?

答案1

我最终创建了一个包装脚本,并从 .desktop 文件条目执行该脚本。

我的 .desktop 文件仅指向执行我制作的一个名为 的新包装 Bash 脚本studio.bash,其内容如下:

#!/bin/bash
. $HOME/.asdf/asdf.sh
. $HOME/android-studio/bin/studio.sh

这似乎可以正确运行 asdf shell 脚本来设置垫片,然后调用 shell 脚本来启动 Android Studio。花了我很长时间,但它确实有效。希望有其他(更好的?)建议来解决这个问题,而不需要所有这些繁琐的程序。

我认为问题很大一部分在于 asdf 指定自己为bash脚本,但在我的系统上将studio.sh其指定为sh脚本并sh映射到,这让人感到困惑dash。将这三件事结合起来,试图确定.bash_profile.bashrc.profile等中的哪些是相关的,对我来说有点费脑筋。

相关内容