草庐IT

env-shebang

全部标签

linux - 如何编写 bash shell 脚本以通过 ssh 连接到远程计算机并更改用户并导出 env 变量并执行其他命令

我有一个在多个不同的远程redhat机器上运行的网络服务。每当我想更新服务时,我都会从版本控制库(我使用perforce)同步用perl编写的新Web服务源代码,并使用新同步的perl代码重新启动服务。我觉得一个一个登录到远程机器,然后手动一个一个重启服务的那一系列命令,太无聊了。所以我写了一个像下面这样的bash脚本update.sh以“一次在一个地方做,更新所有机器”。我将在我的本地机器上运行这个shell脚本。不过好像不行。它只执行第一个命令“sudo-uwebservice_username-i”,正如我从本地机器的命令行中看到的那样。(下面的代码仅显示了它将如何更新远程Web

linux - Mono 框架 shebang linux

我有一个C#源文件。有没有什么办法可以放置类似#!/usr/bin/envmono的东西,这样它就会被编译然后作为可执行文件运行:以python为例,我会这样做:#!/usr/bin/envpython事实上,我想要的是在编译后运行脚本而不调用“monothe.exe”。我想要类似“./the.exe”的东西。 最佳答案 编辑:我刚刚注意到您想对单个源文件执行此操作——对单个源文件。Mono附带的csharpREPL几乎支持这一点。然而,REPL吐出一个语法错误,因为它不理解shebang行并将其视为预处理器定义。如果我误解了你说的

python /usr/bin/env : bad interpreter: Not a directory

我做错了。我安装了Python3,然后我执行了以下命令以使默认版本的Python成为Python3sudoln-fs/opt/Python-3.4.1/python/usr/bin/python但我想回到python2.7而我做到了sudoln-fs/usr/bin/python2.7/python/usr/bin/python现在,当我想运行一个带有python的bash脚本时,出现以下错误:/usr/bin/env:badinterpreter:Notadirectory当我运行这个命令时:ls-l/usr/bin/env我的结果是红色的:lrwxrwxrwx1rootroot25

linux - shell 脚本 : Using grep and tr in the shebang

我的系统上有这个脚本:#!/bin/grepcatcaterpillarcatlolmorecat当我运行它时,我得到了预期的输出,#!/bin/grepcatcaterpillarcatmorecat但是,如果我改用tr,在脚本中#!/usr/bin/tr'a''e'caterpillarcatlolmorecat我希望得到#!/usr/bin/tr'a''e'ceterpillercetlolmorecet但是没有打印任何内容,如果我手动键入cat,我会得到c/t。如何更改脚本使其表现得像第一个脚本? 最佳答案 shebang行

linux - 了解 shebang 行中的 awk -f 选项

我正在阅读某人的awk脚本。以header#!/usr/bin/envawk-f开头。env命令没有-f选项。因此,他们必须为awk命令传递-f选项。我查看了awk的手册页。它说Awk扫描每个输入文件以查找与prog中字面指定的一组模式或指定为-fprogfile的一个或多个文件中的任何模式匹配的行。对于每个模式,都可以有一个关联的操作,当文件的一行与该模式匹配时将执行该操作。根据我的理解,这意味着awk通过搜索具有progfile/prog中指定模式的行来处理输入文件,具体取决于您是否对awk使用-f选项。并且根据使用的模式,对输入文件中找到的行执行关联的操作。我的问题是……在运行a

linux - 为什么 LD_PRELOAD 对没有 shebang 的脚本不生效?

如果在运行脚本时使用LD_PRELOAD指定要预加载的库,我发现实际上仅当脚本有shebang行时才预加载该库。例如,给定这个脚本:#NotashebangechoHello和这个命令:LD_PRELOAD=/path/to/preload_me.so./script.sh脚本在完全没有加载库的情况下运行,我可以通过其初始化代码的(非)效果来监控。另一方面,如果我添加一个shebang行:#!/bin/shechoHello...然后当我通过同一命令运行脚本时,库被加载。指定哪个解释器似乎并不重要。当然,我也可以使用/bin/bash或我尝试过的任何其他sh系列shell。为什么会有差

linux - 为什么 env 不打印 PS1 变量?

当我们打印PS1的值时,它被设置为:$echo$PS1[\u@\h\W]\$我们可以使用env命令来打印环境变量。为什么它不列出PS1变量?$env|grepPS1#Nooutputhere 最佳答案 因为PS1不是(通常,在您的特定情况下)环境变量。在bash实例中设置了许多变量,您可以列出这些变量:$setBASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:…BASH_ALIASES=()BASH_ARGC=()..SHLVL=1SSH_AGENT_PID=853SSH_AUTH_SOCK=/

linux - 我如何在 make 目标之间传递 ENV 变量

我在makefile中有这样的target1:exportvar1=test$(MAKE)target2target2:echo$(var1)这是空的我有其他依赖项,所以我想在第一个目标中设置变量,然后所有子依赖项都应该能够访问它编辑:.ONESHELL:target1:exportvar1=testecho$(var1)输出maketarget1exportvar1=testecho 最佳答案 默认情况下,make为每个配方调用一个新的shell环境,第一行的exported变量不在第二行的范围内。您可以通过多种方式解决此问题:使

linux - bash:设置数组 env 变量并从任何 shell 脚本取消引用它失败

我以这种方式将数组设置为环境变量例如。脚本test.sh在测试.sh#!/bin/bashexportSTRING=("str1""str2")源码测试.sh现在在脚本test-1.sh#!/bin/bashecho${STRING[0]}响应什么都没有,只是一个空行,然而,如果我尝试在test.sh中设置STRING="str1"并在test-1.sh中执行echo$STRING,这有效。测试仅从root用户执行,现在如何将数组设置为环境变量,以便我可以根据需要调用数组的元素?早些时候,我什至尝试修改/etc/bashrc,但也没有产生任何积极的结果。我需要将数组设置为env变量,因

linux - 如何使 intellij Idea 使用 #! 正确突出显示 Scala 脚本? (shebang)

如何使intellijIdea正确突出显示Scala脚本。尝试1将文件名更改为'test.sc'。Intellij不喜欢第一行,即它不是有效的scala注释语法尝试2将文件名更改为'test.sh'。Intellij认为所有语法都是bash脚本。文件名=./test.sh#!/usr/bin/envammimportammonite.ops._,ImplicitWd._println("Stopscript")valx=1+1 最佳答案 如果需要保留.sc扩展名这里有一个小技巧将shebang更改为#!/usr/bin/envamm