【问题标题】:bash sh - command not found [duplicate]bash sh - 找不到命令[重复]
【发布时间】:2012-06-06 20:02:54
【问题描述】:
#!/bin/bash
cd ~/workspace/trunk;
svn up;

当我从命令行运行./build.sh 时,它会说:

: command not found

然后什么也没有发生。我该如何解决这个问题?

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    从脚本行的末尾删除 ;

    这不会发生在我的 bash 中,所以我不确定到底出了什么问题,但我的猜测是:

    ; 是命令的分隔符。由于您的最后一个命令以; 结尾,因此您的 bash 可能需要在之后执行另一个命令。但是,由于脚本完成,它会读取一个无法执行的空命令。

    【讨论】:

    • 虽然分号是不必要的,但它们实际上并不会导致这里给出的问题——最坏的情况是如果你有两个相邻的命令终止符,你会得到一个语法错误。
    • @CharlesDuffy,可能。但是,我不知道 OP 使用的是什么 bash。由于错误没有发生在我的 bash 中,我猜他的版本不同,可能期待在; 之后出现一些东西。错误消息指示 <nothing>: command not found,这意味着他的 bash 实际上确实尝试执行 <nothing>
    • 不一定是<nothing>——更可能的是,它正在尝试执行$'\r',它只是呈现为空。
    • @DennisWilliamson,没有错误消息用双引号引起来,很可能是由 OP 引起的。邮件末尾还有一个"
    • 这个答案是完全错误的。当脚本使用正常(UNIX 格式)行结尾时,尾随 ;s 是无害的——您可以自己轻松地测试它。只有 DOS 行尾会触发此错误。
    【解决方案2】:

    我的猜测是文件中有不可打印的控制字符,或者它有 \r\n (CRLF) 行结尾(dos/windows 模式)。

    尝试使用以下命令进行检查:

    $ hexdump -C build.sh 
    00000000  23 21 2f 62 69 6e 2f 62  61 73 68 0a 63 64 20 7e  |#!/bin/bash.cd ~|
    00000010  2f 77 6f 72 6b 73 70 61  63 65 2f 74 72 75 6e 6b  |/workspace/trunk|
    00000020  3b 0a 73 76 6e 20 75 70  3b 0a                    |;.svn up;.|
    0000002a
    
    $ file build.sh 
    build.sh: Bourne-Again shell script, ASCII text executable
    
    $ unix2dos build.sh 
    unix2dos: converting file build.sh to DOS format ...
    
    $ hexdump -C build.sh 
    00000000  23 21 2f 62 69 6e 2f 62  61 73 68 0d 0a 63 64 20  |#!/bin/bash..cd |
    00000010  7e 2f 77 6f 72 6b 73 70  61 63 65 2f 74 72 75 6e  |~/workspace/trun|
    00000020  6b 3b 0d 0a 73 76 6e 20  75 70 3b 0d 0a           |k;..svn up;..|
    0000002d
    
    $ file build.sh 
    build.sh: Bourne-Again shell script, ASCII text executable, with CRLF line terminators
    

    【讨论】:

    • 我打赌你 5 美元,它真的是 build.sh,但是 biuld.sh 示例值得称赞:D
    • 我只是使用了 OP 的文件名 :P 是的,我敢打赌它也是 build.sh
    【解决方案3】:

    我解决了添加执行权限:

    sudo chmod +x file.sh

    【讨论】:

    • 工作。这应该是公认的答案。
    【解决方案4】:

    我已经通过这个命令解决了我的错误。

    sudo chmod +x build.sh
    

    【讨论】:

      【解决方案5】:

      以上都对我有用,除了

      sudo ./build.sh
      

      【讨论】:

        猜你喜欢
        • 2013-05-17
        • 1970-01-01
        • 2017-02-23
        • 2013-03-22
        • 2015-01-22
        • 2022-11-24
        • 2021-07-07
        • 2019-08-10
        • 2021-11-13
        相关资源
        最近更新 更多