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

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

而不是: sh script.sh

我想使用: script.sh

我怎样才能做到这一点?

PS(我)我不使用shell脚本,我试着读别名,但我不明白如何使用它们。

(ii)我还阅读了有关将脚本与PATHvariables中的另一个文件链接的信息。 我正在使用我的大学服务器,我没有权限在这些位置创build文件。

在文件顶部添加“shebang”:

 #!/bin/bash 

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

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

 export PATH=$PATH:/appropriate/directory 

(通常,您需要$HOME/bin来存储您自己的脚本)

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

  1. 在顶部添加sha-bang {#!/bin/bash)行。
  2. 使用chmod u+x scriptname使脚本可执行。
  3. 将脚本放在/usr/local/bin文件夹下。
  4. 使用脚本的名称运行脚本。

注意:我build议把它放在/usr/local/bin文件夹下的原因是因为很可能这个path已经添加到PATH variable

更新:

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

  1. 在您的主目录中创build一个文件夹,并将其称为myscripts
  2. 在你的主目录上执行ls -lart ,以确定你的shell正在使用的启动脚本。 它应该是.profile.bashrc
  3. 一旦确定了启动脚本,请在脚本中添加以下行: export set PATH=$PATH:~/myscript
  4. 添加完成后,获取启动脚本或注销并重新login。
  5. 使用脚本名称执行脚本。

只要确保它是可执行的,使用chmod +x 。 默认情况下,当前目录不在你的PATH上,所以你需要把它作为./script.sh来执行 – 否则通过合格的path引用它。 另外,如果你真的需要script.sh ,你需要把它添加到PATH中。 (您可能无法修改系统path,但几乎可以肯定地修改您当前环境的PATH。)这也假设您的脚本以#!/bin/sh类的东西开始。

你也可以使用一个别名,这个别名与shell脚本没有什么关系,只是shell而已,很简单:

 alias script.sh='sh script.sh' 

这将允许你只是简单地使用script.sh (字面上 – 这不会为任何其他*.sh文件)而不是sh script.sh

您必须启用该程序的可执行位。

 chmod +x script.sh 

那么你可以使用./script.sh

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

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

你可以键入sudo install(脚本名)/ usr / local / bin /(你想要input的内容来执行这个脚本)

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

现在可以运行没有.sh和任何目录

在这个例子中,该文件将被称为myShell

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

sudo nano myShell

注意我们没有放置.sh扩展名? 这是因为当我们从terminal运行它时,我们只需要键入myShell来运行我们的命令!

现在,在nano中,顶行必须是#!/bin/bash那么你可以在继续之前留下一个新行。

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

所以,我input以下内容:

echo Hello World!

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

#!/bin/bash echo Hello World!

现在保存该文件,然后运行以下命令:

sudo chmod +x myShell

现在我们通过使用以下命令将文件移动到/usr/bin/

sudo cp myShell /usr/bin/

确保机器能够正确执行,我们需要重新启动机器

sudo shutdown -r now使用sudo shutdown -r now

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

快乐的编码!

添加。 (当前目录)到你的PATHvariables。
你可以通过编辑你的.profile文件来做到这一点。
把下面的行放在.profile文件中
PATH=$PATH:.

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

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

服务器: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更改为您的用户目录,然后在terminal的任意位置键入: backupscript以运行脚本! (假设/ usr / bin在你的path中)