简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
开始前的准备:Linux 系统、编辑器
我这里使用的 Ubuntu 系统和 Vim 编辑器
一、第一个 Shell 脚本
1、操作过程
打开终端,随意选择一个路径,在里面新建一个名为 hello_world 的文件,在文件中输入如下内容并保存:
#!/bin/bash
# My first script
echo "Hello World!"
然后通过如下命令将其设置为可执行文件:
chmod u+x hello_world
现在在终端中输入:
./hello_world
然后会得到 “Hello World” 样式的输出。
2、脚本说明
(1)hello_world 文件中的第一行用来指定用系统中的什么程序来解释该 shell 脚本,在这里使用的是 /bin/bash 。
(2)在 shell 脚本中用 # 符号来对一行进行注释。
二、关于路径 (path)
在上面的例子中,我们运行脚本的方法是,在脚本所在的路径下,执行 ./script_name ,其中的 “./” 表示当前路径。实际上这种方式可以描述为在任意路径下输入要执行的脚本的全路径及其文件名,例如,如果上述脚本文件存放在 ~/jason/bin 文件夹下面,我们可以在终端的任意一个路径下输入 ~/jason/bin/hello_world 来执行该脚本。
另外,对于某些路径下的脚本,我们在随意的一个路径下直接输入脚本的名称就能使脚本成功运行。接下来将要讲解其中的原因。
首先,我们先在终端输入如下命令:
echo $PATH
我们将会得到一个以冒号分隔的路径列表,在我的机器上面得到的结果如下所示:
/home/jason/bin:/home/jason/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
当我们在终端的任意一个路径下面直接输入一个脚本的文件名并回车时,系统会在上面的路径列表中进行搜索是否存在这么一个脚本文件,如果能找到该脚本文件则执行之,否则会给出相应的错误提示。
如果想令系统也能搜索其他某些路径下的脚本,可以先执行 cd 命令回到用户主目录,然后修改该目录下的 .bash_profile 或 .profile 文件,具体修改哪个文件,取决于所使用的系统。在我使用的系统中该目录下有 .profile 文件,没有 .bash_profile ,所以我修改的是 .porofile 文件。我机器的 .profile 文件的内容如下:
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
修改方法:直接修改上述文件的最后有一行,将想要添加的路径按照“冒号分隔路径”的方式添加到 PATH 中。比如,在使用直接输入脚本文件名称的方式执行脚本时,我想令系统也可以在 ~/Desktop/myfiles 文件夹下进行搜索。这时,我可以将 .profile 文件的最后一行改为:
PATH="$HOME/bin:$HOME/.local/bin:$HOME/Desktop/myfils:$PATH"
注意:为保证所修改的 .profile 文件能够生效,在修改完成后,再在终端中执行如下命令并重启计算机:
source .profile
相关文档
http://linuxcommand.org/lc3_wss0010.php
上一篇:NLTK(三):使用模型做预测
下一篇:Shell Script(二):别名和函数