标签: setenv

如何找到Windows SDK的SetEnv.cmd / SetEnv.cmd无法正常工作

我们正在运行一个Team City Build Server,并且希望编译一个Visual C ++项目。到目前为止,这很容易,因为我已经使用Windows SDK设置了Windows Build Agent,但是我们没有解决方案/项目文件。

而是使用CMake创建项目文件。CMake似乎有点笨(当未安装Visual Studio时无法生成解决方案),但是通过一些技巧,我可以做到这一点。然后可以使用MSBuild构建该解决方案。

问题来了。为了自动运行,我需要调用Windows SDK的SetEnv.cmd。而且我似乎无法自动找到它。它位于Windows SDK的bin子目录中,但是bin和root都不在路径中,并且%mssdk%环境变量由SetEnv.cmd设置,并且事先不可用!

将Windows SDK \ bin目录添加到PATH会导致SetEnv.cmd不再起作用(退出时显示类似The x86 compilers are not currently installed和的消息Jump target Set_x86 not found

开始菜单链接正在使用Windows SDK目录作为工作目录来调用SetEnv.cmd。但是,如果我将根目录添加到PATH,则Bin \ SetEnv.cmd不可用。

如何自动找到SetEnv.cmd?即使将环境变量设置为setenv.cmd的完整路径也不起作用,并且当我将%mssdk%定义为sdk目录时,则调用%mssdk%\ bin \ SetEnv也不起作用。我还尝试定义%mssdk%,然后定义cd%mssdk%,然后调用bin \ SetEnv。此外,在所有这些情况下都找不到编译器。如果我在命令行上手动cd到根目录或bin目录,然后调用SetEnv.cmd,它也将不起作用。

虽然开始菜单链接可以正常工作。

作为记录,我目前的解决方案如下:

我创建了一个MSBuild文件,该文件在命令行上使用CMake创建了解决方案文件,然后使用MSBuild任务调用了创建的解决方案。可以从TeamCity轻松构建MSBuild文件,尽管我需要一些其他技巧来满足CMake愚蠢的寻找编译器的麻烦,尽管我不会调用它。并不是很令人满意,但是可以。

windows msbuild sdk setenv

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

如何做有条件的.htaccess密码保护

我正在尝试使用.htaccess密码保护特定网址.不同的URL指向相同的文件但具有不同的工作方式.我现在需要密码保护只有一个网址.我正在尝试使用setenvif这样做但它似乎不起作用.我可能不完全理解apache setenv模块的用途或用途.

这是我的代码似乎不起作用

SetEnvIfNoCase Host "topasswordprotect\.domain\.com$" protecturl
<IfDefine protecturl>
  Require valid-user
  AuthName "Please enter your name and password"
  AuthType Basic
  AuthUserFile .htpasswd
</IfDefine>
Run Code Online (Sandbox Code Playgroud)

.htaccess conditional passwd setenv ifdefine

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

使用setenv然后进行dlopen调用的问题

我正在使用setenv设置DYLD_LIBRARY_PATH,所以当我执行dlopen()时,它将有正确的路径来查找我的.dylib,但是当我执行dlopen()时,它似乎不会搜索我添加到DYLD_LIBRARY_PATH的路径.

从我可以收集的内容中,我对DYLD_LIBRARY_PATH的更改在重新执行我的进程之前不会生效.它是否正确?

此外,如果这是正确的,是有办法来设置DYLD_LIBRARY_PATH和有我的变化与出当仁不让过程的复位工作.

哦,是的,我在MAC OSX上编写了这段代码.

提前致谢.

environment-variables dyld dlopen setenv

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

二进制环境变量和 setenv()

在 Linux 中使用二进制环境变量时,我发现了一些奇怪的行为,其中一些单个字节似乎是错误的。我仔细检查了它,似乎某些字节在给 setenv() 时总是会被错误地“转换”。看这个:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    char array[256];

    int i;
    for(i = 1; i < 256; i++) {
        array[i] = i;
    }

    setenv("badenv", array, 1);

    system("/bin/sh");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我执行这个程序,然后当我做 echo $badenv > test; hexdump 测试我看到:

0000000 0101 0302 0504 0706 2008 0c0b 0e0d 100f
0000010 1211 1413 1615 1817 1a19 1c1b 1e1d 201f
0000020 2221 2423 2625 2827 2a29 2c2b 2e2d 302f
0000030 3231 3433 3635 3837 3a39 3c3b 3e3d …
Run Code Online (Sandbox Code Playgroud)

c linux environment-variables setenv

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

setenv/clearenv + procfs environ

/proc/pid/environ如果流程修改了环境,是否可以从文件中获取相关信息?我的测试表明setenv/putenv/clearenv不要更新environ文件.但是,bash它可以调用unset ENV并查看procfs中的更改.

linux setenv procfs

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

环境变量中的 REDIRECT_ 前缀(与 mod_rewrite 无关)

我们正在尝试在我们的登台环境中设置并行运行的多个 PHP 版本。为了实现这一点,我构建了所有相关的 PHP 二进制文件(在适用的情况下使用 --enable-fastcgi)并使用 mod_fastcgi 通过包装脚本调用前者。

如果相关,这里是/php-fcgi/php-5.5:

#!/bin/sh
PHPRC=/usr/local/php55/etc/php.ini
export PHPRC

PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS

PHP_FCGI_CHILDREN=3
export PHP_FCGI_CHILDREN

exec /usr/local/php55/bin/php-cgi
Run Code Online (Sandbox Code Playgroud)

到目前为止一切正常(即所有配置为运行 PHP 5.5 的虚拟主机都在 5.5 上运行,等等);然而,在<Directory>块中使用“SetEnv”设置的环境变量存在问题。所有这些都以REDIRECT_.

示例:

SetEnv APPLICATION_ENV "production"
Run Code Online (Sandbox Code Playgroud)

将导致此输出:

'REDIRECT_APPLICATION_ENV' => string 'production' 
Run Code Online (Sandbox Code Playgroud)

任何人都可以就我做错了什么提出建议吗?

澄清为什么这与 mod_rewrite 无关:即使完全禁用 mod_rewrite 也会发生这种行为。

php apache fastcgi environment-variables setenv

5
推荐指数
0
解决办法
1859
查看次数

setenv在c编程中的用法?

#include <stdio h>
#include <stdlib.h>

int main(int argc, char *argv[], char *envp[])
{
    int i = 0;
    while (envp[i] != NULL)
    {
        if (strstr(envp[i], "SHLVL") != NULL)
            printf("%s\n", envp[i]);
        i++;
    }
  
    setenv("SHLVL", "stackoverflow", 2);
    i = 0;
    while (envp[i] != NULL)
    {
        if (strstr(envp[i], "SHLVL") != NULL)
            printf("%s\n", envp[i]);
        i++;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码中SHLVL是一个现有的环境变量。当我尝试使用它更改该变量的值时,setenv它会给出预期的输出。

SHLVL=1
SHLVL=stackoverflow
Run Code Online (Sandbox Code Playgroud)

在另一种情况下:具有不存在的环境变量的相同代码

int main(int argc, char *argv[], char *envp[])
{
    int i = 0;
    while (envp[i] != NULL)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

c setenv

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

Apache SetEnvIf麻烦

我的.htaccess文件中有以下内容:

SetEnvIf Host "^example\.com$" myvar=1
<IfDefine myvar>
  RewriteRule ^(.*)$ index2.php?q=$1 [L,QSA]
</IfDefine>
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该是正常的.但是,当我访问时,"myvar"似乎没有被定义example.com.我知道我已mod_setenvif.c启用(我已使用<IfModule>块验证).

任何想法为什么"myvar"没有得到定义?

apache environment-variables setenv

4
推荐指数
1
解决办法
3283
查看次数

如何使用setenv在bash中设置环境变量?

我有一个文件,其中包含应用程序以下列格式运行所需的所有环境变量...

setenv DISPLAY invest7@example.com
setenv HOST example.com
setenv HOSTNAME sk
...
Run Code Online (Sandbox Code Playgroud)

我该如何设置环境.bash中的变量使用上面的文件?有没有办法以某种方式setenv在bash中使用命令?

bash tcsh setenv

4
推荐指数
1
解决办法
5850
查看次数

如何在 R 中检查包时修复“无法找到 GhostScript 可执行文件以运行大小减少检查”错误?

在 Revolution R Enterprise 控制台中,

devtools::check("C:/Users/User/Documents/Revolution/mypackage")
Run Code Online (Sandbox Code Playgroud)

产生

checking sizes of PDF files under 'inst/doc' ... NOTE
Unable to find GhostScript executable to run checks on size reduction
Run Code Online (Sandbox Code Playgroud)

没有任何其他警告/错误/注释。所以,(尽管 AFAIK 这个注释对于最终检查来说不是那么重要),我想摆脱这个警告(因为我想把 .PDF 文件放入mypackage\inst\docR 之外生成的文件夹中)。

我的笔记本中安装了 Ghostscript。我通过以下方式获得帮助:

> help("R_GSCMD")
R_GSCMD: Optional. The path to Ghostscript, used by dev2bitmap, bitmap and embedFonts. 
Consulted when those functions are invoked. 
Since it will be treated as if passed to system, spaces and shell metacharacters should be escaped.


> Sys.getenv("R_GSCMD")
[1] ""
Run Code Online (Sandbox Code Playgroud)

我所做的(并再次出错)是:

> …
Run Code Online (Sandbox Code Playgroud)

r ghostscript setenv

4
推荐指数
1
解决办法
3246
查看次数