Fel*_* Mc 6 bash debian gnome3 bashrc
在我的 ~/.bashrc 和 ~/.profile 中,我将一些变量设置为一些文件路径:
export MY_VAR1="/path/to/somewhere"
Run Code Online (Sandbox Code Playgroud)
在我的 ~/bin/(添加到我的 PATH)中,我有一些脚本依赖于设置的这些变量。
如果我从终端运行这些命令,它们会按预期工作。
但是,如果我尝试双击 Nautilus 中的脚本并运行它,它会像未设置这些变量一样运行。
如果我使用 GUI 实用程序将其中一个脚本添加到 Gnome 的“启动应用程序”,或者如果我使用“主菜单”GUI 实用程序将它们添加到 Gnome 菜单,则会发生同样的事情。
我会认为,因为我在我的 ~/.profile 中包含了这些变量,它在登录时运行,gnome 和 nautilus 以及它们产生的进程可以访问这些变量。
Gnome 和 Nautilus 都在我的登录用户下运行。我在 ~/bin 中的所有脚本的顶部都有 bash shebang。
我是 bash 脚本的新手,对不起,如果我遗漏了一些明显的东西。我正在使用 Debian Wheezy 和 Gnome3。
那是因为开始的 X 会话永远不会读取您的~/.bashrc和~/.profile. 通常,桌面管理器以 root 或它自己的用户身份从 init 脚本启动。生成的进程在遇到桌面管理器启动脚本时通常具有 init 进程的环境。(此时我不会谈论不太成熟的 init 实现。)
登录后,它会生成一个子进程,该进程仅继承该环境。子进程将权限授予您的 uid 并运行/etc/X11/Xsession,它通常只运行/etc/X11/Xsession.d. 这些脚本通常要么设置环境变量,要么专门修改桌面环境的调用。
在该目录中,您可能会找到一个类似于40x11-common_xsessionrcDebian 系统上的文件,它是您的~/.xsessionrc. 最后一个文件/etc/X11/Xsession.d将启动您的桌面环境。你所有的 GUI 进程都将从这个进程中产生,从而继承通过设置的环境/etc/X11/Xsession.d,因此你的~/.xsessionrc.
~/.xsessionrc是一个脚本文件,它可能是源代码,~/.bashrc但风格确实很糟糕,因为然后您的 DE 源代码,终端进程继承该环境,然后~/.bashrc再次bash 源代码,这可能会产生不需要的副作用。
但是,完全可以接受 a ~/.myenvironmentvariables,它包含严格的(环境)变量定义并来自~/.bashrc和~/.xsessionrc。如果这样做,您的所有进程都将继承 中指定的变量~/.myenvironmentvariables,尤其是您在 Nautilus 中双击的 shell 脚本。
| 归档时间: |
|
| 查看次数: |
2398 次 |
| 最近记录: |