Q在 Linux 中运行 shell 脚本前需要做哪些准备?我有一个 shell 脚本文件,想在 Linux 里直接执行。除了脚本内容本身之外,还需要检查哪些条件,才能确保它能正常运行?
A运行前的基础准备
需要确认脚本文件有可执行权限,并且文件首行写有正确的解释器路径,例如 #!/bin/bash 或 #!/bin/sh。也要检查脚本中使用的命令是否已安装,路径是否正确,文件编码是否正常。若脚本依赖环境变量,还要确认相关变量已设置。
Q如果 shell 脚本无法执行,通常该从哪里排查?我在 Linux 里运行脚本时遇到报错,脚本没有按预期执行。遇到这种情况,一般应该优先检查哪些地方?
A常见排查方向
可以先检查脚本是否有执行权限,再确认是否使用了正确的运行方式。还要查看脚本第一行的解释器是否存在,文件是否是 Windows 换行格式,脚本中的命令是否拼写正确,以及当前用户是否有权限访问相关资源。
Q用 bash、sh 或直接执行脚本,有什么区别?同一个 shell 脚本,我看到可以用 bash script.sh、sh script.sh,或者 ./script.sh 来运行,这几种方式在行为上有什么不同?
A不同运行方式的区别
bash script.sh 会用 bash 解释脚本,sh script.sh 会用 sh 解释脚本,而 ./script.sh 则会根据脚本首行的解释器来决定使用哪个 shell。不同方式的差异在于兼容性和语法支持,某些只适用于 bash 的语法,用 sh 运行时可能会报错。
Q如何让 shell 脚本在任何目录下都能方便调用?我不想每次都进入脚本所在目录再运行它,有没有更方便的做法,让脚本在系统中更容易被调用?
A提升脚本调用便利性的方法
可以把脚本放到系统 PATH 包含的目录中,或者把脚本所在目录加入 PATH 环境变量。若需要长期使用,也可以创建软链接到常用目录。这样无论当前目录在哪,都能直接输入脚本名执行。