Answers:
在文件顶部添加“ shebang”:
#!/bin/bash
并使您的文件可执行(chmod +x script.sh
)。
最后,修改路径以添加脚本所在的目录:
export PATH=$PATH:/appropriate/directory
(通常,您想$HOME/bin
存储自己的脚本)
source script.sh
效果很好,或者说效果不错 source <filename_without_any_extension_type>
source ./my-cool-script
(或. ./my-cool-script
)将使用脚本中定义的任何变量来污染当前的shell会话。除非您要通过设置环境变量,更改目录等来显式修改Shell会话,否则不应使用源。否则,可能会导致真正可怕的错误,因为一个脚本执行中的变量(如果通过采购完成)可能会影响另一个脚本执行。
./
,则可能是名称冲突。尝试重命名。
这些是直接使用脚本名称的一些先决条件:
she-bang (#!/bin/bash)
在最上方添加该行。chmod u+x scriptname
使脚本可执行。(scriptname
脚本名称在哪里)/usr/local/bin
文件夹下。注意:我建议将其放在/usr/local/bin
文件夹下的原因是,最有可能的原因是该路径已经添加到您的中PATH variable
。
如果您无权访问该/usr/local/bin
文件夹,请执行以下操作:
myscripts
。ls -lart
在你的主目录,以确定您的外壳也使用启动脚本。应该是.profile
或.bashrc
。export set PATH=$PATH:~/myscript
。scriptname
。. .bashrc
。也就是说,只需在.
其后跟space
启动脚本名称即可。
只需确保使用即可执行chmod +x
。默认情况下,当前目录不在您的PATH上,因此您将需要以./script.sh
- 身份执行它,或者通过限定路径引用它。另外,如果您确实需要just script.sh
,则需要将其添加到PATH中。(您可能无权修改系统路径,但是几乎可以肯定的是,您可以修改自己当前环境的PATH。)这还假定您的脚本以开头#!/bin/sh
。
您还可以使用别名,该别名与shell脚本并不真正相关,而仅与shell有关,并且很简单:
alias script.sh='sh script.sh'
这样一来,您就可以仅使用script.sh
(从字面意义上讲-这不适用于任何其他*.sh
文件)sh script.sh
。
alias
在shell提示符下运行命令,然后别名即可用于运行命令。
在此示例中,文件将被称为 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!
/usr/bin
- /usr/local/bin
为此目的,很多系统都在讨论并且/usr/bin
严格保留用于OS。
sudo chmod
您自己的文件。
您必须启用程序的可执行位。
chmod +x script.sh
那你可以用 ./script.sh
您可以将文件夹添加到文件的PATH中.bashrc
(位于主目录中)。将此行添加到文件末尾:
export PATH=$PATH:/your/folder/here
添加。(当前目录)到您的PATH变量。
您可以通过编辑.profile文件来实现。
在您的.profile文件
PATH=$PATH:.
中添加以下行:只需确保#!/bin/bash
在脚本的开头添加Shebang()行,并使脚本可执行(使用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在您的路径中)
"#!/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
将任何文件设为可执行文件
假设您有一个名为migrate_linux_amd64的可执行文件,并且想像“ migrate”这样的命令来运行此文件
[oracle@localhost]$ ./migrate.linux-amd64
Usage: migrate OPTIONS COMMAND [arg...]
migrate [ -version | -help ]
Options:
-source Location of the migrations (driver://url)
-path Shorthand for -source=file://path
-database Run migrations against this database (driver://url)
-prefetch N Number of migrations to load in advance before executing (default 10)
-lock-timeout N Allow N seconds to acquire database lock (default 15)
-verbose Print verbose logging
-version Print version
-help Print usage
Commands:
goto V Migrate to version V
up [N] Apply all or N up migrations
down [N] Apply all or N down migrations
drop Drop everyting inside database
force V Set version V but don't run migration (ignores dirty state)
version Print current migration version
-rwxr-xr-x 1 oracle oinstall 7473971 May 18 2017 migrate.linux-amd64
如果没有,请确保对文件具有执行特权,然后运行chmod +x migrate.linux-amd64
然后将文件复制到 /usr/local/bin
。该目录归root拥有,使用sudo或切换到root并执行以下操作
sudo cp migrate.linux-amd64 /usr/local/bin
sudo chown oracle:oracle /user/local/bin/migrate.linux.amd64
sudo ln /usr/local/bin/migrate.linux.amd64 /usr/local/bin/migrate
sudo chown oracle:oracle /usr/local/bin/migrate
export PATH = $PATH:/usr/local/bin
[oracle@localhost]$ migrate
Usage: migrate OPTIONS COMMAND [arg...]
migrate [ -version | -help ]
Options:
-source Location of the migrations (driver://url)
-path Shorthand for -source=file://path
-database Run migrations against this database (driver://url)
-prefetch N Number of migrations to load in advance before executing (default 10)
-lock-timeout N Allow N seconds to acquire database lock (default 15)
-verbose Print verbose logging
-version Print version
-help Print usage
Commands:
goto V Migrate to version V
up [N] Apply all or N up migrations
down [N] Apply all or N down migrations
drop Drop everyting inside database
force V Set version V but don't run migration (ignores dirty state)
version Print current migration version
只是:
/path/to/file/my_script.sh
$HOME/bin
如果您还没有一个bin目录,请将其添加到PATH(靠近前端)中。将您要直接执行的脚本(和任何其他程序)直接放在此处,而无需在此处指定路径名,也无需在此处指定实际程序所在的符号链接。