我有一个shell脚本,我想运行而不使用“sh”或“bash”命令 . 例如:
而不是: sh script.sh
sh script.sh
我想用: script.sh
script.sh
我怎样才能做到这一点?
附: (i)我不太多使用shell脚本,我尝试阅读别名,但我不明白如何使用它们 .
(ii)我还阅读了关于将脚本与PATH变量中的另一个文件相关联的内容 . 我正在使用我的大学服务器,但我没有权限在这些位置创建文件 .
在文件顶部添加“shebang”:
#!/bin/bash
并使您的文件可执行( chmod +x script.sh ) .
chmod +x script.sh
最后,修改路径以添加脚本所在的目录:
export PATH=$PATH:/appropriate/directory
(通常,您希望 $HOME/bin 用于存储您自己的脚本)
$HOME/bin
这些是直接使用脚本名称的一些先决条件:
在最顶部添加 sha-bang {#!/bin/bash) 行 .
sha-bang {#!/bin/bash)
使用 chmod u+x scriptname 使脚本可执行 .
chmod u+x scriptname
将脚本放在 /usr/local/bin 文件夹下 .
/usr/local/bin
仅使用脚本名称运行脚本 .
Note: 我建议将其放在 /usr/local/bin 文件夹下的原因是因为很可能是已经添加到 PATH variable 的路径 .
PATH variable
如果您无权访问 /usr/local/bin 文件夹,请执行以下操作:
在主目录中创建一个文件夹,我们称之为 myscripts .
myscripts
在您的主目录上执行 ls -lart ,以识别您的shell正在使用的启动脚本 . 它应该是 .profile 或 .bashrc .
ls -lart
.profile
.bashrc
确定启动脚本后,在脚本中添加以下行 - export set PATH=$PATH:~/myscript .
export set PATH=$PATH:~/myscript
添加后,请提供启动脚本或注销并重新登录 .
使用脚本名称执行脚本 .
使用 chmod +x 确保它是可执行的 . 默认情况下,当前目录不在PATH上,因此您需要将其作为 ./script.sh 执行 - 或者通过限定路径引用它 . 或者,如果您确实只需要 script.sh ,则需要将其添加到PATH中 . (您可能无权修改系统路径,但几乎可以肯定地修改您当前环境的PATH . )这也假设您的脚本以 #!/bin/sh 之类的东西开头 .
chmod +x
./script.sh
#!/bin/sh
你还可以使用一个别名,它与shell脚本无关,只与shell有关,而且很简单:
alias script.sh='sh script.sh'
这将允许您只使用 script.sh (字面意思 - 这不适用于任何其他 *.sh 文件)而不是 sh script.sh .
*.sh
在此示例中,该文件将被调用 myShell
myShell
首先,我们需要创建这个文件,我们可以通过键入以下内容开始:
sudo nano myShell
注意我们没有放 .sh 扩展名?那是因为当我们从终端运行它时,我们只需输入 myShell 就可以运行我们的命令!
.sh
现在,在nano中,顶线必须是 #!/bin/bash 然后你可以在继续之前留下一条新线 .
为了演示,我将添加一个基本的 Hello World! 响应
Hello World!
所以,我键入以下内容:
echo Hello World!
之后,我的示例应如下所示:
#!/bin/bash echo Hello World!
现在保存文件,然后运行此命令:
sudo chmod +x myShell
现在我们已经使文件可执行,我们可以使用以下命令将其移动到 /usr/bin/ :
/usr/bin/
sudo cp myShell /usr/bin/
只是为了确保机器能够正确执行它,我们需要重启机器
我用 sudo shutdown -r now
sudo shutdown -r now
恭喜!我们的命令现在完成了!在终端,我们可以输入 myShell ,它应该说 Hello World!
您必须为该程序启用可执行位 .
然后你可以使用 ./script.sh
您可以将文件夹添加到 .bashrc 文件(位于主目录中)的PATH中 . 将此行添加到文件末尾:
export PATH=$PATH:/your/folder/here
您可以键入sudo install(脚本名称)/ usr / local / bin /(要键入以执行所述脚本的内容)
例如: sudo install quickcommit.sh /usr/local/bin/quickcommit 输入密码
sudo install quickcommit.sh /usr/local/bin/quickcommit
现在可以在没有.sh和任何目录的情况下运行
添加 . (当前目录)到您的PATH变量 .您可以通过编辑.profile文件来完成此操作 .将以下行放在.profile文件中PATH=$PATH:.
PATH=$PATH:.
只需确保在脚本的开头添加Shebang( #!/bin/bash )行并使脚本可执行(使用 chmod +x <File Name> ) .
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更改为您的用户目录并键入: backupscript 在终端上的任何地方运行脚本! (假设/ usr / bin在你的路径中)
8 回答
在文件顶部添加“shebang”:
并使您的文件可执行(
chmod +x script.sh
) .最后,修改路径以添加脚本所在的目录:
(通常,您希望
$HOME/bin
用于存储您自己的脚本)这些是直接使用脚本名称的一些先决条件:
在最顶部添加
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
.添加后,请提供启动脚本或注销并重新登录 .
使用脚本名称执行脚本 .
使用
chmod +x
确保它是可执行的 . 默认情况下,当前目录不在PATH上,因此您需要将其作为./script.sh
执行 - 或者通过限定路径引用它 . 或者,如果您确实只需要script.sh
,则需要将其添加到PATH中 . (您可能无权修改系统路径,但几乎可以肯定地修改您当前环境的PATH . )这也假设您的脚本以#!/bin/sh
之类的东西开头 .你还可以使用一个别名,它与shell脚本无关,只与shell有关,而且很简单:
这将允许您只使用
script.sh
(字面意思 - 这不适用于任何其他*.sh
文件)而不是sh script.sh
.在此示例中,该文件将被调用
myShell
首先,我们需要创建这个文件,我们可以通过键入以下内容开始:
注意我们没有放
.sh
扩展名?那是因为当我们从终端运行它时,我们只需输入myShell
就可以运行我们的命令!现在,在nano中,顶线必须是
#!/bin/bash
然后你可以在继续之前留下一条新线 .为了演示,我将添加一个基本的
Hello World!
响应所以,我键入以下内容:
之后,我的示例应如下所示:
现在保存文件,然后运行此命令:
现在我们已经使文件可执行,我们可以使用以下命令将其移动到
/usr/bin/
:只是为了确保机器能够正确执行它,我们需要重启机器
我用
sudo shutdown -r now
恭喜!我们的命令现在完成了!在终端,我们可以输入
myShell
,它应该说Hello World!
您必须为该程序启用可执行位 .
然后你可以使用
./script.sh
您可以将文件夹添加到
.bashrc
文件(位于主目录中)的PATH中 . 将此行添加到文件末尾:您可以键入sudo install(脚本名称)/ usr / local / bin /(要键入以执行所述脚本的内容)
例如:
sudo install quickcommit.sh /usr/local/bin/quickcommit
输入密码现在可以在没有.sh和任何目录的情况下运行
添加 . (当前目录)到您的PATH变量 .
您可以通过编辑.profile文件来完成此操作 .
将以下行放在.profile文件中
PATH=$PATH:.
只需确保在脚本的开头添加Shebang(
#!/bin/bash
)行并使脚本可执行(使用chmod +x <File Name>
) .这是我的备份脚本,它将为您提供想法和自动化:
服务器:Ubuntu 16.04 PHP:7.0 Apache2,Mysql等...
将/ home / user更改为您的用户目录并键入: backupscript 在终端上的任何地方运行脚本! (假设/ usr / bin在你的路径中)