电子说
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
Mac系统默认的是zsh环境,ubuntu下默认的shell环境是bash环境,可以通过执行命令查看:
# ubuntu终端
xq@ubuntu:~$ echo $SHELL
/bin/bash
# mac电脑终端
➜ ~ echo $SHELL
/bin/zsh
一般系统都会内置几种shell,可以通过命令chsh
修改系统默认的shell环境,在下次打开终端生效,修改示例如下:
# 查看系统中已安装的shell类型
xq@ubuntu:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/bin/zsh
/usr/bin/zsh
# 切换默认的shell环境到zsh
xq@ubuntu:~$ chsh -s /bin/zsh
# 切换默认的shell环境到bash
xq@ubuntu:~$ chsh -s /bin/bash
我们开发环境用的最多的就是bash和zsh了,下面就介绍这两个shell为例介绍对应的配置文件。
Bash的配置文件
加载顺序:/etc/profile、/etc/bashrc、 /.bash_profile、 /.bashrc
Zsh的配置文件
加载顺序:zshenv、zprofile、zshrc、zlogin
由于bash脚本使用场景更广泛,如android源码build目录中各种shell脚本,下面就以bash脚本为例进行讲述。
shell没有官方的ide支持,可以通过vscode + shellman插件来实现高效编写。shellman插件有进行命令与模版提示的功能。
脚本文件一般以.sh
结尾(扩展名并不影响脚本执行),文件第一行指定运行的shell解释器类型。
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
#!/bin/bash
echo "Hello World !"
还有一种指定shell解释器的写法是通过env来声明
#!/usr/bin/env bash
echo "Hello World !"
以脚本中声明的shell解释器运行,示例如下:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,会忽略脚本中指定的解释器信息
如:
# 以zsh解析运行
zsh test.sh
# 以bash解析运行
bash test.sh
shell脚本不能像android studio里面可以打断点方式调试,但是可以通过特定方式把执行过程都打印出来来排查问题。
对整个脚本加调试可以通过在指定解释器的地方添加-x
参数
#!/usr/bin/env bash -x
echo "Hello World !"
或者
bash -x test.sh
如果是针对特定的代码块加调试可以通过下面的方式实现:
set -x
调试内容
set +x
示例代码如下:
set -x
echo "hello"
echo "world"
set +x
# 输出结果,带+的为执行过程打印
+ echo hello
hello
+ echo world
world
+ set +x
全部0条评论
快来发表一下你的评论吧 !