linux 一个程序的启动参数问题?

发布于 2022-09-12 00:31:09 字数 501 浏览 17 评论 0

$ WINEPREFIX=~/.deepinwine/Deepin-QQ deepin-wine winecfg

带上 WINEPREFIX 打开的就是 Deepin-QQ 的设置,如果像是以下这样:

$ deepin-wine winecfg

那么打开的就是 wine 的设置。


我不理解的是,前面那个 WINEPREFIX 是用来作什么的?设置变量吗?

如果是设置变量的话,为什么我

$ export WINEPREFIX=~/.deepinwine/Deepin-QQ

之后,用 deepin-wine winecfg 命令打开的还是 wine 的设置?

第一次在Linux中这样使用命令,很不解。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月下客 2022-09-19 00:31:09

WINEPREFIX=~/.deepinwine/Deepin-QQ deepin-wine winecfg

这种写法的格式相当于:变量名=变量值 要执行的命令
赋值语句和要执行的命令中间用空格隔开,而不是用分号 ;
这种格式的写法表示,定义一个变量,且只影响被执行命令的shell环境,不影响当前的shell环境。

具体说明可以查看 GNU bash 的在线帮助链接 http://www.gnu.org/software/b...,第 “3.7.1 Simple Command Expansion” 小节有如下说明:

When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right.

  1. The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing.

If no command name results, the variable assignments affect the current shell environment. Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment.

即,在执行命令时,可以在命令前面加一些变量赋值语句,所定义的变量只影响执行命令的shell。

export WINEPREFIX=~/.deepinwine/Deepin-QQ 命令会导出一个全局变量到shell环境里面,且默认会传递给当前 shell 的子 shell。
所以,先执行 export WINEPREFIX=~/.deepinwine/Deepin-QQ,再执行 deepin-wine winecfg 命令,执行wine命令的子 shell 应该是可以获取到 WINEPREFIX 变量的值。

建议执行 export WINEPREFIX=~/.deepinwine/Deepin-QQ 命令后,在当前shell里面执行 export 命令、env 命令看一下 WINEPREFIX 变量的值,看是否已经定义成功。
然后在当前shell里面执行 deepin-wine winecfg 命令再看一下。

补充一下,在 Ubuntu 中文 Wiki 上,介绍 wine 操作技巧时,就有提到可以先 export WINEPREFIX,再执行 wine 命令。
具体可以查看 https://wiki.ubuntu.org.cn/Wi... 这个链接。关键内容如下:

使用不同的.wine目录运行程序
----------------

我们有时不希望所有程序安装于一个.wine中。因为有些程序需要特别的运行环境,或者对.wine的更改比较大(经常需要删除.wine),或者直接影响其它程序运行。

比如我们使用/home/xxx/.no1-wine运行该文件夹中的yyy程序

WINEPREFIX=/home/xxx/.no1-wine wine /home/xxx/.no1-wine/drive\_c/Program\\ Files/yyyy

具体路径大家可以自己设置。WINEPREFIX= 是用于声明路径的

如果是在shell文件中编写命令:

export WINEPREFIX=$HOME/.wine-thunder
wine $WINEPREFIX/drive\_c/Program\\ Files/Thunder/Thunder.exe

是个很好的例子。export是变量声明。

即,先 export WINEPREFIX,再执行 wine 命令,在语法上是可行的。
如果在 deepinwine 上有异常,可能跟 deepinwine 使用 WINEPREFIX 变量的逻辑有关,具体可以再查看 deepinwine 的文档了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文