Lem*_*ree 16 linux bash shell sh dash-shell
我有bash脚本,它需要bash.
另一个人尝试用它来运行它
sh script_name.sh
Run Code Online (Sandbox Code Playgroud)
它失败了,因为sh是他的发行版中的破折号的象征性链接.
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Aug 25 16:06 /bin/sh -> dash
Run Code Online (Sandbox Code Playgroud)
我有一个想法使用包装脚本:
#!/bin/sh
bash script_name.sh
Run Code Online (Sandbox Code Playgroud)
目标是使用带有符号链接到破折号的系统中的bash运行.sh脚本.
neu*_*uro 31
好吧,通常你使用shebang告诉shell使用正确的解释器:
#!/bin/bash
# your script here
Run Code Online (Sandbox Code Playgroud)
您必须将脚本设置为可执行:
chmod +x my_script.sh
Run Code Online (Sandbox Code Playgroud)
并让用户启动它:
./my_script.sh
Run Code Online (Sandbox Code Playgroud)
这似乎比使用包装器脚本简单.
即使用户使用sh/dash或任何类似解释器,您也可以使用jbr test来使用bash运行脚本:
#!/bin/bash
if [ -z "$BASH_VERSION" ]
then
exec bash "$0" "$@"
fi
# Your script here
Run Code Online (Sandbox Code Playgroud)
这样它就可以正常使用:
sh ./my_script.sh
# or
bash ./my_script.sh
# or
./my_script.sh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75046 次 |
| 最近记录: |