【问题标题】:Unable to start Java applications on xfce4 desktop? - Screw you lightdm无法在 xfce4 桌面上启动 Java 应用程序? - 拧你lightdm
【发布时间】:2015-09-17 21:41:20
【问题描述】:

我曾经使用 Debian 的替代系统来设置像 java, javac, javap 这样的“全局环境”,但我已经了解了它的缺点。

所以我加了

export JAVA_HOME=/opt/jdk/java
export PATH=$JAVA_HOME/bin:$PATH

到我的~/.bashrc,当我打开我的终端时,我可以按预期使用命令,但我的大多数 shell 脚本不再工作了。

正如您在下图中看到的,他们检查$JAVA_HOME 是否存在并执行以下命令,该命令什么都不做。当我输入 $JAVA_HOME/bin/java -version 时,它可以正常工作。如果我在终端中启动脚本,它也可以工作。

所以#!/bin/sh 似乎不是source .bashrc?将其更改为#!/bin/bash 并不能解决问题。

我尝试将export 命令添加到/etc/profile,但这似乎在启动/登录时没有得到sourced

有人有想法或关键字吗?我认为解决方案很简单,但目前我被卡住了。

提前谢谢你!

更新: 在 bash 终端中使用 ./something.sh 启动脚本可以正常工作。右键单击并执行或“使用 bash 打开”(XFCE4 上下文菜单)什么都不做。

【问题讨论】:

  • 也许你会发现oneofthesesuperuser问题很有帮助。
  • 如果我没记错的话,现在 debian 中默认的 sh 应用程序是 dash 而不是 bash。这意味着/bin/sh 将不会获取任何.bash_rc.bash_profile,并且还将缺少许多其他功能。您可能想要更改默认 shell。
  • @RealSkeptic 这很有趣,似乎是解决方案,但不幸的是它没有用。但我有靠近的感觉……
  • 你做了什么来改变默认的shell?
  • 用另一个脚本包装脚本,该脚本记录到一个文件并在图形环境中运行,这样您就可以看到错误。例如 ./somescript.sh >somescript.log 2>./somescript.err

标签: java linux environment-variables


【解决方案1】:

仅当 shell 交互式非登录时,Bash 才会加载 .bashrc。在你的情况下,shell 不是交互式的,所以 .bashrc 没有加载。

.bashrc 包含一个检查,如果 shell 不是交互式的,它会阻止它执行。通常 .bashrc 做的第一件事是:

case $- in 
   *i*) ;;
     *) return;;
esac

这将阻止您从脚本调用source .bashrc。 脚本应该从您的父 shell 继承,因此您应该在运行脚本之前获取所有已导出的变量。

另外,首选的 shebang 是 #!/usr/bin/env bash,它更便携。

所以在你的情况下: 打开一个终端窗口。这将加载 .bashrc,但只是为了确保运行 . .bashrc,然后运行 ​​echo $JAVA_HOME 以验证变量设置是否正确。

那么你的脚本就是:

#!/usr/bin/env bash
java -jar <whatever>

如果您想要设置其他一些与脚本相关的变量,您可以通过采购“设置”脚本来实现:

#!/usr/bin/env bash
source ~/settings.sh
echo $SOME_VAR_SET_IN_SETTINGS_SH

【讨论】:

  • 这也不起作用。我尝试了一个非常简单的脚本#!/bin/[ba]sh java -jar myJar.jar,结果相同。除非我在 bash shell 中启动它,否则什么都不会发生。
  • @parboiledRice 有时默认的 .bashrc 包含一个检查,如果 shell 不是交互式的,它将阻止加载它。有关更多信息,请参阅更新的答案。
【解决方案2】:

使用 LightDM 向 XFCE4 中的 PATH 变量添加其他文件夹将无法按预期工作!使用这些附加命令并从图形环境启动的 Shell 脚本将失败,因为找不到该命令。在启动这些脚本之一时记录 PATH 变量表明 PATH 变量被非常默认的变量覆盖。为什么?因为 LightDM 硬编码 PATH 变量并为图形环境覆盖它。去你的!看here

来源:https://ljwo.wordpress.com/2014/02/02/global-path-in-debian-wheezy-xfce/

禁用它或使用另一个 DM。

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 2017-09-10
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2015-01-02
    • 2023-03-22
    相关资源
    最近更新 更多