【问题标题】:Cmder bash script executingCmder bash脚本执行
【发布时间】:2016-07-11 19:30:21
【问题描述】:

我在 Windows 中创建了基本脚本。

#!/bin/bash

echo Hello

我正在使用 Cmder,ConEmu 衍生产品。我尝试使用 chmod 更改权限,但它们是相同的。我不知道如何执行这个脚本。普通的 Linux 方式,即: ./hello.sh 不起作用,只输入 hello.sh 会使 Windows 尝试打开它,这很糟糕,因为我希望它在控制台中。如何在 ConEmu/Cmder 中执行这个脚本?

【问题讨论】:

  • Windows 不支持#! 行,所以你需要执行程序,例如bash hello.sh(就像在 Linux 中一样),或更改 .sh 扩展名的文件关联 - 请参阅 statfile 命令。
  • 谢谢,这样就可以了。

标签: windows bash conemu cmder


【解决方案1】:

我注意到您可以从 cmder 运行 bash。所以我可以这样做:

> bash
$ ./yourScript.sh

或更简单

> cat yourScript.sh | bash

免责声明:cmder(刚刚下载)和 Linux 的新手。

【讨论】:

    【解决方案2】:

    在我自己的 Cmder 实例中,bash [filename] 工作得很好,而且我相信要简单得多:

    C:\Users\Conor O'Brien
    λ type test.sh
    echo Hello
    
    C:\Users\Conor O'Brien
    λ bash test.sh
    Hello
    

    【讨论】:

      【解决方案3】:

      如果您希望能够通过简单地输入脚本名称来运行脚本,解决方法是创建一个别名并将其放入您的.bashrc,例如:

      alias scriptName="bash /pathToTheScript/yourScript.sh"
      

      或者您可以在 .bashrc 中获取脚本并通过函数使其可用:

      source /pathToTheScript/yourScript.sh
      

      脚本在哪里:

      #!/bin/bash
      function your_function()
      {
      yourCode
      }
      

      【讨论】:

        【解决方案4】:

        如果您没有时间,请跳至以下结论

        TL:DR:我在 Windows 上玩弄“Cmder > bash”来创建全局脚本:

        我创建了一个外部脚本:

        a@DESKTOP /c/Scripts/
        λ vi test.sh
        

        内容

        #!/bin/bash
        echo 'Can you see me now?'
        

        可以从同一个文件夹执行:

        a@DESKTOP /c/Scripts/
        λ ./test.sh
        Can you see me now?
        

        关于创建 simbolink 链接:

        λ ln -s /c/Portables/Scripts/GlobalesBash/test.sh /bin/mytest
        

        仅用名称调用它似乎可以正常工作:

        λ mytest
        Can you see me now?
        

        但如果原始文件被修改:

        λ cat test.sh
        #!/bin/bash
        echo 'Yes, I see you'
        

        更改未通过链接反映出来:

        λ mytest
        Can you see me now?
        

        结论:

        所以最好的选择是直接在文件夹 /bin 上创建脚本:

        λ cd /bin
        λ vi aloha
        λ cat aloha
        echo 'aloha!!!'
        

        并且#!/bin/bash 在 Windows 上使用 Cmder 甚至都不是必需的,它可以从 Cmder bash 中的任何地方成功执行:

        λ cd /c
        a@DESKTOP /c
        λ aloha
        aloha!!!
        

        【讨论】:

          【解决方案5】:

          它就像在 Unix shell 上一样工作

          sh path/to/your/script.sh
          

          【讨论】:

          • 这对我来说效果最好 - sh 在您当前的环境(例如 conda 环境)中运行脚本,而 bash 打开一个新的 shell。
          【解决方案6】:

          您可以将自己的 .sh 文件放入 $CMDER_ROOT/config/profile.d/*.sh 目录中,正如文档中所解释的 here

          【讨论】:

            猜你喜欢
            • 2015-03-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-10
            • 2013-07-13
            • 2011-08-09
            • 2014-11-08
            • 2013-04-19
            相关资源
            最近更新 更多