.desktop - 运行 RBENV shell - 运行 应用 ruby 版本

.desktop - run RBENV shell - Run app with ruby version

在 16.04 sudo 环境中使用 RBENV。

如何使用 RBENV shell $rubyversion 或类似的解决方案 运行 来自 .desktop 文件的 ruby 应用程序用于具有预定义 ruby 版本的菜单?

编辑:

以下是我如何使用 Ḱathryin 发布的解决方案: 我向 bash 添加了交互式 shell 选项,不确定它到底是如何工作的,但它有所帮助。

桌面文件:

[Desktop Entry]
Name=app
Encoding=UTF-8
Exec=bash -ic "/path/app.sh;${SHELL:-bash}"
Type=Application

运行应用程序的 sh exec

echo '#!/bin/bash -i

cd /...../appdir

source ~/.bashrc
eval "$(rbenv init -)"
rbenv shell 2.4.1
./app $*
' > app.sh

sudo ln -s /path/app.sh /usr/local/bin/app

运行带有 sudo 的应用程序似乎也可以工作!

有关设置 .desktop 文件的详细信息,请参阅:Creating a .desktop file for a new application

由于 rbenv(如果安装正确)是一个函数而不是可执行文件,它不会像指向正确的文件那么简单。一种解决方案是创建一个 shell 脚本来设置环境:

#!/usr/bin/env bash    # Execute as a bash script
eval "$(rbenv init -)" # Initialize rbenv
ruby $*                # Run the ruby script specified the .desktop file

然后确保脚本可执行并将其放入您的 .desktop Exec key:

Exec=/path/to/script/ruby_stub.sh script_you_want_to_run.rb ARGS