我有一个shell脚本,我想在不使用“sh”或“bash”命令的情况下运行。例如:

而不是:sh script.sh

我想使用:script.sh

我该怎么做呢?

P.S. (i)我不太使用shell脚本,我试着阅读关于别名的内容,但我不知道如何使用它们。

(ii)我还读了关于将脚本链接到PATH变量中的另一个文件。我正在使用我的大学服务器,我没有权限在这些位置创建文件。


当前回答

通过使用文件的属性使脚本文件成为可执行文件 在~/.bashrc中为可执行文件创建别名。别名<别名> = <完整脚本文件路径>' 刷新用户会话以应用它。源~ / . bashrc

其他回答

以下是我的备份脚本,将给你的想法和自动化:

服务器: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在您的路径中)

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

在最顶部添加shebang行(#!/bin/bash)。 使用chmod u+x scriptname使脚本可执行(其中scriptname是脚本的名称)。 将脚本放在/usr/local/bin文件夹下。 注意:我建议将它放在/usr/local/bin下,因为很可能该路径已经添加到path变量中。 只使用脚本名称scriptname运行脚本。

如果你没有访问/usr/local/bin的权限,那么执行以下操作:

Create a folder in your home directory and call it bin. Do ls -lA on your home directory, to identify the start-up script your shell is using. It should be either .profile or .bashrc. Once you have identified the start up script, add the following line: PATH="$PATH:$HOME/bin" Once added, source your start-up script or log out and log back in. To source, put . followed by a space and then your start-up script name, e.g. . .profile or . .bashrc Run the script using just its name, scriptname.

只是:

/path/to/file/my_script.sh

在本例中,文件名为myShell

首先,我们需要创建这个文件,我们可以输入以下内容:

sudo nano myShell

注意到没有。sh扩展名了吗? 这是因为当我们从终端运行它时,我们只需要键入myShell来运行我们的命令!

现在,在nano的顶部行必须是#!/bin/bash,然后在继续之前留下新行。

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

所以,我输入以下内容:

echo Hello World!

之后,我的例子应该是这样的:

#!/bin/bash
echo Hello World!

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

chmod +x myShell

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

sudo cp myShell /usr/bin/

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

输入“# !/bin/sh”。 然后将其保存为script.sh。 复制到$HOME/bin或$HOME/usr/bin 目录在不同的linux发行版上可能不同,但它们以'bin'结尾,并且位于主目录中 cd $HOME/bin或$HOME/usr/bin 输入chmod 700 script.sh 你可以在终端上输入run.sh来运行它。 如果不能正常工作,请尝试chmod +x run.sh而不是chmod 700 run.sh