如何在不使用“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
来存储您自己的脚本)
这些是直接使用脚本名称的一些先决条件:
- 在顶部添加
sha-bang {#!/bin/bash)
行。 - 使用
chmod u+x scriptname
使脚本可执行。 - 将脚本放在
/usr/local/bin
文件夹下。 - 使用脚本的名称运行脚本。
注意:我build议把它放在/usr/local/bin
文件夹下的原因是因为很可能这个path已经添加到PATH variable
。
更新:
如果您无权访问/usr/local/bin
文件夹,请执行以下操作:
- 在您的主目录中创build一个文件夹,并将其称为
myscripts
。 - 在你的主目录上执行
ls -lart
,以确定你的shell正在使用的启动脚本。 它应该是.profile
或.bashrc
。 - 一旦确定了启动脚本,请在脚本中添加以下行:
export set PATH=$PATH:~/myscript
。 - 添加完成后,获取启动脚本或注销并重新login。
- 使用脚本名称执行脚本。
只要确保它是可执行的,使用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/quickcommit
input密码
现在可以运行没有.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中)