标签: environment-variables

如何告诉 start-stop-daemon 根据 --chuid 参数更新 $HOME 和 $USER

我正在尝试运行使用$HOME$USER环境变量的服务。我可以将它们设置为服务本身,但这只是一个临时解决方案。

假设我有一个test.sh包含以下内容的脚本:

echo $USER
Run Code Online (Sandbox Code Playgroud)

我运行它start-stop-daemon以查看我的结果:

$ start-stop-daemon --start --exec `pwd`/test.sh --user guest --group guest --chuid -guest
root
Run Code Online (Sandbox Code Playgroud)

好像它没有更新环境,也许应该报告为错误?

我发现了一个讨厌的hacky解决方案,它只在我这个简单的用例中有效(原因不明):

$ start-stop-daemon --exec /usr/bin/sudo --start -- -u guest -i 'echo $USER'
guest
Run Code Online (Sandbox Code Playgroud)

我敢肯定其他人偶然发现了这一点,我对干净的解决方案感兴趣。

$ start-stop-daemon --version
start-stop-daemon 1.13.11+gentoo
Run Code Online (Sandbox Code Playgroud)

linux users home-directory environment-variables

6
推荐指数
1
解决办法
1万
查看次数

authorized_keys 环境变量未设置环境变量

我在那里创建了文件 ~/.ssh/environment :

LEVEL=0
Run Code Online (Sandbox Code Playgroud)

当我通过 ssh 运行脚本以获取环境变量级别时,它会像它应该的那样返回 0。

在authorized_keys 文件中,我有几个键,并试图更改其中几个键的值,因此当我在另一端运行脚本时,它可以修改它处理信息的方式。我在普通键之前添加以下内容:

command="/path/to/script" environment="LEVEL=1"
Run Code Online (Sandbox Code Playgroud)

如果我没有环境段,则脚本执行得很好,但是如果我设置了环境部分,则脚本将无法运行。

我不确定我做错了什么。我什至正确地接近这个吗?

基本上我有 4 个不同的键,在某些情况下,我希望人们拥有 1 级或 2 级,默认值为 0,但我想设置谁拥有该级别,并且仅在他们登录执行他们的命令时才设置它。

我想我几乎不明白它应该如何工作,所以我对它应该如何工作的理解可能完全错误。

有任何想法吗?

ssh environment-variables ssh-keys

6
推荐指数
3
解决办法
5311
查看次数

为 weberver 用户设置 $PATH

我试图添加$PATH为所有用户,包括网络服务器的用户(即,WWW的数据)用不同的方法,例如编辑/etc/profile/etc/environment等。在所有的情况下,它工作在终端,但不与内壳PHP命令。

例如echo $PATH在终端中显示可用路径,包括我添加的路径;但是,shell_exec('echo $PATH')在 PHP 中显示了没有我添加的路径的原始路径: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

如何全局设置 $PATH 以供网络服务器用户使用?我在 Ubuntu/Debian 上使用 nginx。

我尝试编辑/etc/init.d/nginx,我认为这是nginx的起点,但没有效果。

linux ubuntu nginx environment-variables php-fpm

6
推荐指数
1
解决办法
6512
查看次数

Windows:如何从命令行将程序添加到系统的路径环境变量中?

我希望将目录永久添加到%PATH%大量 Windows 机器上可用的环境中。有什么方法可以从命令行 ( cmd)执行此操作,以便我可以编写解决方案的脚本,而不必在数十台服务器上使用 GUI。

我怎样才能做到这一点?

windows command-line-interface environment-variables windows-command-prompt path

6
推荐指数
2
解决办法
1万
查看次数

如何在 Apache SetEnvIf 值中转义空格

我正在尝试使用 SetEnvIf(Apache2,通过 .htaccess 文件)来存储环境变量,其中分配给变量的值需要包含空格。例如,尝试将环境变量“AUTH_KEY”设置为具有值“a b”:

SetEnvIf Request_URI "^/example" AUTH_KEY="a\ b"
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我都无法转义值中的空格 - 空格充当要创建的 env vars 之间的分隔符(在上面的 AUTH_KEY 是用值 '"a\' 和第二个 env var 创建的创建名为 'b"')。我也尝试过单引号但没有运气。

如何转义空格字符?

environment-variables apache-2.2

6
推荐指数
1
解决办法
3202
查看次数

apache:在静态文件的 HTTP 标头中发送请求 URI

为了满足PubSubHubbub 0.4 规范的要求,我必须rel=self为每个文件发送一个标头。

我现在正在尝试使用Apachemod_headers和环境变量来做到这一点:

Header append Link '<http://example.org%{REQUEST_URI}e>; rel="self"'
Run Code Online (Sandbox Code Playgroud)

只要文件由 PHP 处理,这就会起作用,但不适用于*.htm未由mod_php或任何 CGI 进程处理的静态文件(如)。

似乎没有办法获取所有当前 Apache 环境变量的列表,因此我无法检查哪些实际上可用。

所以我的问题是:如何访问Header append指令中当前请求的 URL 的相对路径?


发生在带有 Apache 的 Debian 7 上2.2.22-13+deb7u4

environment-variables http-headers apache-2.2

6
推荐指数
1
解决办法
925
查看次数

如何在 AWS ElasticBeanstalk 中查看以 RDS_ 为前缀的环境变量?

如果您使用 ElasticBeanstalk 设置 RDS,您如何进入框(通过 eb ssh)并查看将 RDS 应用于您的 EB 实例时设置的环境变量?

Amazon 会自动设置这些环境变量。

  • RDS_DB_NAME
  • RDS_USERNAME
  • RDS_PASSWORD
  • RDS_HOSTNAME
  • RDS_PORT

似乎只能在运行应用程序的进程中查看。

我想以某种方式通过终端查看这些,eb printenv命令不显示它们。

environment-variables amazon-ebs amazon-rds

6
推荐指数
1
解决办法
3175
查看次数

如何在 sudo 中覆盖 PATH 环境变量?

我在/etc/profile. 在一般用户的情况下我没有任何问题,但是当我成为sudo.

你会怎么做重写PATH这是由设置/etc/profile,即使我成为root权限sudo

root sudo environment-variables

5
推荐指数
1
解决办法
1万
查看次数

grep 不一致地默认为 grep -P?

我有一个脚本可以做一些内务处理,当从交互式 shell 调用时它运行良好,但在被 cron 调用时什么也没做。为了解决这个问题,我使用以下命令启动了一个带有“空白”环境的 shell:

env -i /bin/bash --noprofile --norc
Run Code Online (Sandbox Code Playgroud)

使用这个空白环境,我已经深入到我的脚本中,发现以下内容grep与任何文件都不匹配:

grep -il "^ws_status\s*=\s*[\"']remove[\"']$"
Run Code Online (Sandbox Code Playgroud)

但是,当从交互式 shell 运行时,该命令将返回匹配文件的文件名。

请注意,该表达式匹配如下行: WS_STATUS = "remove"

通过反复试验,我发现将-P选项添加到 [Perl regex] 中,命令开始在“空白”shell 中正常工作。但是,我不知道为什么我的登录 shell 似乎默认为grep -P.

  • 只有一个grep二进制,/bin/grep
  • 没有为grep=pgrep或定义别名grep="grep -P"
  • 没有GREP_OPTIONS定义环境变量。

这里有什么交易?

注:操作系统为 RHEL v5.10,Bash 为 v3.2.25,grep 为 v2.5.1

linux bash grep environment-variables

5
推荐指数
1
解决办法
300
查看次数

配置php-fpm访问docker中的环境变量

我在 docker 容器中运行 php7-fpm。但是,我的 php 脚本无法访问我的 docker-compose 文件中设置的环境变量。getenv('MY_ENV_VAR')返回FALSE

我已更改/etc/php/7.0/fpm/pool.d/www.conf为包含clear_env = no并重新启动,service php7.0-fpm restart但我的环境变量 start 不存在。

我也试过编辑 /etc/php/7.0/fpm/php.ini 包含行variables_order = "EGPCS".

当我在 bash shell 上执行到我的容器时,我可以看到我的变量存在。只是它们在我的 php 脚本中无法访问。

我错过了什么?

environment-variables php-fpm docker docker-compose

5
推荐指数
2
解决办法
1万
查看次数