RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 907160
Accepted
Hellseher
Hellseher
Asked:2020-11-16 06:59:30 +0000 UTC2020-11-16 06:59:30 +0000 UTC 2020-11-16 06:59:30 +0000 UTC

在系统启动的哪个阶段定义环境变量?

  • 772

该脚本crontab使用参数运行:

/usr/spool/cron/crontab/root

@reboot /path/to/script

观察到一个有趣的功能,并非所有环境变量都存在,其中一个主要$USER是空的,您必须手动定义它:

脚本

#!/usr/bin/env bash
...
export USER=$(id -un)
...

为此还有一些缺失的方法$PATH,我加载了缺失的:

#!/usr/bin/env bash

source /etc/profile
...

在哪个引导阶段可以使用完整范围的环境变量?在启动由 运行的脚本之前是否值得等待 N 秒cron?

linux
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    aleksandr barakin
    2020-11-16T08:15:30Z2020-11-16T08:15:30Z

    “引导步骤对环境变量的影响”这个问题完全没有意义。毕竟:

    • 任何进程都可以从父进程接收一些环境变量(当然,“父进程”可能不会传递任何东西——这取决于编写它的程序员想出什么)并且可以将它(通过修改)传递给“孩子”;
    • 任何进程都可以修改其环境变量集:添加、删除变量、更改它们的值——一切都在作者-程序员的手中。
    • 在加载操作系统的过程中,所有这些都不会以任何方式“相交”,除非这种“加载”是大量进程的递归生成。

    关于环境变量USER。详细。简而言之:

    • posix 标准不需要它,但确实需要变量LOGNAME.
    • /bin/login通常,它们从程序(或其模拟类型xsession等)进入用户进程的环境变量(通过从“父”到“子”的继承)。
    • cron程序不会为子进程设置此变量。并基于上述,它工作得非常正确。正如您在问题中所写的那样,您可以从变量中获取值,LOGNAME以免启动其他过程。

    关于环境变量PATH。

    它的最小默认值由cron程序本身设置。但通常维护人员会在cron程序的全局配置文件中覆盖它(输出可能因系统而异):

    $ grep PATH /etc/crontab
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    

    如有必要,您可以在您的用户crontab文件(由 command 编辑)中以相同的方式重新定义它$ crontab -e。(同时,您也可以在那里定义一个变量。请记住,不会执行crontabUSER文件中的变量替换。您必须明确指定它:)USER=vasja

    • 4

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5