AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1164002
Accepted
mehdi
mehdi
Asked: 2019-08-08 01:28:41 +0800 CST2019-08-08 01:28:41 +0800 CST 2019-08-08 01:28:41 +0800 CST

无法在环境变量中添加带有尖锐符号的值

  • 772

我需要为环境变量设置密码,但问题是密码包含尖锐符号,当我想使用这个变量时,只显示第一个尖锐符号。例如假设he#l#lo是我的密码,当我将其设置为 时/etc/environment,PASSWORD_API="he#l#lo"我打印它只是显示he并在之后留下字符#。但是当我export PASSWORD_API="he#l#lo"从终端使用时一切正常!通过添加环境变量有什么问题\etc\environment我无法更改密码所以如果你有任何想法请帮助我。谢谢你

environment-variables
  • 3 3 个回答
  • 376 Views

3 个回答

  • Voted
  1. Best Answer
    steeldriver
    2019-08-08T04:23:49+08:002019-08-08T04:23:49+08:00

    据我所知,这是pam_env模块如何读取环境文件行的限制(甚至在尝试将它们解析name=value成对之前)。

    具体来说,在_pam_assemble_line函数 (in libpam/pam_handlers.c) 中:

            /*
             * we are only interested in characters before the first '#'
             * character
             */
    
            while (*s && *s != '#')
                 ++s;
    

    似乎没有规定以任何不同的方式处理带引号或转义的字符串。

    如果您需要使用此类字符设置环境变量,那么您将需要在其他地方进行 - 例如,创建一个/etc/profile.d/password-api.sh包含该行的文件

    export PASSWORD_API="he#l#lo"
    

    默认情况下应该获取它/etc/profile。


    当然,我相信您知道,在任何地方以纯文本形式存储密码是一个坏主意 - 如果您的应用程序提供了另一种选择(例如使用基于密钥的身份验证,或将密码安全地添加到代理),您应该使用它。

    • 3
  2. WinEunuuchs2Unix
    2019-08-08T02:31:34+08:002019-08-08T02:31:34+08:00

    删除等号周围的空格:

    $ PASSWORD_API="he#l#lo"
    $ echo $PASSWORD_API
    he#l#lo
    
    • 0
  3. Dushyant Deshwal
    2021-09-03T02:37:06+08:002021-09-03T02:37:06+08:00

    我尝试了很多设置环境的方法,但导出似乎只能工作,并且每次重新启动时都运行一堆导出,您在 cron 作业中运行 shell 脚本。

    添加 systemd 环境变量https://www.freedesktop.org/software/systemd/man/systemd.exec.html#EnvironmentFile=这显示了它是如何在环境文件中完成的,它只能用于读取非 # 值,否则它打破 # 价值。

    使用以下命令创建一个 shell 脚本:

    export Key="Value"
    

    然后运行:

    crontab -e
    

    选择您将使用的编辑器并继续添加脚本以在重新启动时运行。

    @reboot sh /home/username/profile.d/env.sh
    

    保存文件并重新启动。您在 env.sh 中添加的任何内容都将针对环境变量运行。它们将很容易设置,并且不会因#.

    • -2

相关问题

  • 什么是“$PATH”和“~/bin”?我怎样才能拥有个人脚本?

  • 在哪里声明环境变量?

  • 如何修改我的 PATH 以便在每个终端会话中都可以使用更改

  • 如何设置环境变量?

  • 在哪里可以找到有关 /etc/environment 文件格式的文档?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve