use*_*159 5 launcher zsh shell command-line environment-variables
KEY="value"在启动 GUI 应用程序之前,我需要一个可用于它的环境变量。启动器文件(在 Ubuntu 中将图标放置在桌面和侧边栏上的那个文件)的值为Exec=/path/to/executable/file.
使用 ZSH 时,我应该在哪里定义这个变量,以便无论我单击应用程序启动器还是直接在我的 shell 中键入 /path/to/executable/file,它都可以用于该应用程序?
在我的命令行提示符中,我尝试在单击启动器之前同时输入KEY="value"和export KEY="value",但它似乎不起作用。我也试过这两个系在我~/.zshrc,做了source ~/.zshrc从我的壳,然后再次点击发射器,但也没有工作。
它应该放在哪个文件中?我相信有一个选择~/.zshenv,~/.zprofile,~/.zshrc,和~/.zlogin。
(对于奖励积分,我应该使用export还是不使用?)
(在应用程序从启动器启动时变量变得可用之前,我是否需要至少注销并重新登录?)
由于您希望在终端外壳(交互式非登录外壳)和桌面启动器图标(由非交互式登录外壳启动的 X 服务器)中也定义变量,因此您应该将定义放在~/.zshenv.
是的,您必须重新启动 x-session 才能为您的桌面图标提供可用的新环境。想象一下这样的启动方案:Graphical Login -> Use your default shell to start the X session -> Desktop -> Shell terminal / Launch program via icon,所以子shell继承了父shell的环境,用于启动X会话。该 shell 只读取一次 RC 文件——在您登录 X 会话时。
为加分。这是手册上说的:
export [ name[=value] ... ]指定的名称被标记为自动导出到随后执行的命令的环境中。(……)
如果在 中定义变量~/.zshenv,原则上可以省略 ,export因为默认情况下会读入此文件。唯一的区别是,如果您使用 启动 shell zsh -f,它不提供 RC 文件。一个小示范:
% foo=foo_defined
% export bar=bar_defined
% print -l $foo $bar
foo_defined
bar_defined
% zsh -f
% print -l $foo $bar
bar_defined
%
Run Code Online (Sandbox Code Playgroud)
IE。只有导出$bar的在后续 shell 中定义。但是为了安全起见,请使用export- 我想不出这是有害的情况。
| 归档时间: |
|
| 查看次数: |
10226 次 |
| 最近记录: |