首页 文章

如何在不使用“sh”或“bash”命令的情况下运行shell脚本?

提问于
浏览
185

我有一个shell脚本,我想运行而不使用“sh”或“bash”命令 . 例如:

而不是: sh script.sh

我想用: script.sh

我怎样才能做到这一点?

附: (i)我不太多使用shell脚本,我尝试阅读别名,但我不明白如何使用它们 .

(ii)我还阅读了关于将脚本与PATH变量中的另一个文件相关联的内容 . 我正在使用我的大学服务器,但我没有权限在这些位置创建文件 .

8 回答

  • 318

    在文件顶部添加“shebang”:

    #!/bin/bash
    

    并使您的文件可执行( chmod +x script.sh ) .

    最后,修改路径以添加脚本所在的目录:

    export PATH=$PATH:/appropriate/directory
    

    (通常,您希望 $HOME/bin 用于存储您自己的脚本)

  • 2

    这些是直接使用脚本名称的一些先决条件:

    • 在最顶部添加 sha-bang {#!/bin/bash) 行 .

    • 使用 chmod u+x scriptname 使脚本可执行 .

    • 将脚本放在 /usr/local/bin 文件夹下 .

    • 仅使用脚本名称运行脚本 .

    Note: 我建议将其放在 /usr/local/bin 文件夹下的原因是因为很可能是已经添加到 PATH variable 的路径 .

    更新:

    如果您无权访问 /usr/local/bin 文件夹,请执行以下操作:

    • 在主目录中创建一个文件夹,我们称之为 myscripts .

    • 在您的主目录上执行 ls -lart ,以识别您的shell正在使用的启动脚本 . 它应该是 .profile.bashrc .

    • 确定启动脚本后,在脚本中添加以下行 - export set PATH=$PATH:~/myscript .

    • 添加后,请提供启动脚本或注销并重新登录 .

    • 使用脚本名称执行脚本 .

  • 11

    使用 chmod +x 确保它是可执行的 . 默认情况下,当前目录不在PATH上,因此您需要将其作为 ./script.sh 执行 - 或者通过限定路径引用它 . 或者,如果您确实只需要 script.sh ,则需要将其添加到PATH中 . (您可能无权修改系统路径,但几乎可以肯定地修改您当前环境的PATH . )这也假设您的脚本以 #!/bin/sh 之类的东西开头 .

    你还可以使用一个别名,它与shell脚本无关,只与shell有关,而且很简单:

    alias script.sh='sh script.sh'
    

    这将允许您只使用 script.sh (字面意思 - 这不适用于任何其他 *.sh 文件)而不是 sh script.sh .

  • 6

    在此示例中,该文件将被调用 myShell

    首先,我们需要创建这个文件,我们可以通过键入以下内容开始:

    sudo nano myShell
    

    注意我们没有放 .sh 扩展名?那是因为当我们从终端运行它时,我们只需输入 myShell 就可以运行我们的命令!

    现在,在nano中,顶线必须是 #!/bin/bash 然后你可以在继续之前留下一条新线 .

    为了演示,我将添加一个基本的 Hello World! 响应

    所以,我键入以下内容:

    echo Hello World!
    

    之后,我的示例应如下所示:

    #!/bin/bash
    echo Hello World!
    

    现在保存文件,然后运行此命令:

    sudo chmod +x myShell
    

    现在我们已经使文件可执行,我们可以使用以下命令将其移动到 /usr/bin/

    sudo cp myShell /usr/bin/
    

    只是为了确保机器能够正确执行它,我们需要重启机器

    我用 sudo shutdown -r now

    恭喜!我们的命令现在完成了!在终端,我们可以输入 myShell ,它应该说 Hello World!

  • 0

    您必须为该程序启用可执行位 .

    chmod +x script.sh
    

    然后你可以使用 ./script.sh

    您可以将文件夹添加到 .bashrc 文件(位于主目录中)的PATH中 . 将此行添加到文件末尾:

    export PATH=$PATH:/your/folder/here
    
  • 18

    您可以键入sudo install(脚本名称)/ usr / local / bin /(要键入以执行所述脚本的内容)

    例如: sudo install quickcommit.sh /usr/local/bin/quickcommit 输入密码

    现在可以在没有.sh和任何目录的情况下运行

  • 12

    添加 . (当前目录)到您的PATH变量 .
    您可以通过编辑.profile文件来完成此操作 .
    将以下行放在.profile文件中
    PATH=$PATH:.

    只需确保在脚本的开头添加Shebang( #!/bin/bash )行并使脚本可执行(使用 chmod +x <File Name> ) .

  • 52

    这是我的备份脚本,它将为您提供想法和自动化:

    服务器:Ubuntu 16.04 PHP:7.0 Apache2,Mysql等...

    # Make Shell Backup Script - Bash Backup Script
        nano /home/user/bash/backupscript.sh
            #!/bin/bash
            # Backup All Start
            mkdir /home/user/backup/$(date +"%Y-%m-%d")
            sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_rest.zip /etc -x "*apache2*" -x "*php*" -x "*mysql*"
            sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_apache2.zip /etc/apache2
            sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_php.zip /etc/php
            sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_mysql.zip /etc/mysql
            sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_rest.zip /var/www -x "*html*"
            sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_html.zip /var/www/html
            sudo zip -ry /home/user/backup/$(date +"%Y-%m-%d")/home_user.zip /home/user -x "*backup*"
            # Backup All End
            echo "Backup Completed Successfully!"
            echo "Location: /home/user/backup/$(date +"%Y-%m-%d")"
    
        chmod +x /home/user/bash/backupscript.sh
        sudo ln -s /home/user/bash/backupscript.sh /usr/bin/backupscript
    

    将/ home / user更改为您的用户目录并键入: backupscript 在终端上的任何地方运行脚本! (假设/ usr / bin在你的路径中)

相关问题