我有bash脚本,它需要bash。用sh运行bash脚本
另一人试图用
sh script_name.sh
运行它,因为SH是符号链接在他的分布冲失败。
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Aug 25 16:06 /bin/sh -> dash
我有一个主意,用包装脚本:
#!/bin/sh
bash script_name.sh
的目标是通过SH配合以一种符号链接冲系统的bash运行.SH脚本。
我有bash脚本,它需要bash。用sh运行bash脚本
另一人试图用
sh script_name.sh
运行它,因为SH是符号链接在他的分布冲失败。
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Aug 25 16:06 /bin/sh -> dash
我有一个主意,用包装脚本:
#!/bin/sh
bash script_name.sh
的目标是通过SH配合以一种符号链接冲系统的bash运行.SH脚本。
嘛,平时使用shebang告诉壳使用正确的解释器:
#!/bin/bash
# your script here
你hav E要设置脚本为可执行:
chmod +x my_script.sh
并让用户启动它:
./my_script.sh
看似简单,而不是使用包装脚本。
您可以使用JBR测试使用bash运行脚本,即使用户使用的是sh /破折号或类似的解释是任何sh:
#!/bin/bash
if [ -z "$BASH_VERSION" ]
then
exec bash "$0" "[email protected]"
fi
# Your script here
这样,它正确地或者工作:
sh ./my_script.sh
# or
bash ./my_script.sh
# or
./my_script.sh
在你的脚本之前您还有别的事情,你可以这样做:
if [ "$BASH" != "/bin/bash" ]; then
echo "Please do ./$0"
exit 1
fi
或更普遍的方式是使用$BASH_VERSION
:
if [ -z "$BASH_VERSION" ]; then
echo "Please do ./$0"
exit 1
fi
如果你只是做'。/ script_name.sh'? – fedorqui
或让其他用户使用'bash script_name.sh'运行? - 封装也会起作用。你的问题是什么? – John3136
你应该显示你的脚本。你想要的是改变脚本,使其严格符合Posix'sh'标准。 –