我遇到了很多麻烦,无法让我的脚本(具有讽刺意味的是,它被称为“script.sh”)在任何地方运行。我遵循了互联网上的许多指南和视频,但无法让它运行。我尝试在脚本位于 /usr/bin 时执行 chmod u+x script.sh,但无论哪种方式都行不通。
它一直说“scrips.sh 不是可执行文件”。
脚本如下:
#!/usr/bin
# Command Options
headname=unlac.net
commandenabled=true
commandname=main
version=0.0.1
author=a-human
servername=ulctesting
server=ulc-testing
guideref=none
if [ $commandenabled = false ]; then
echo "\e[4m\e[1mErr: ULC-001, Command Disabled.\e[0m"
else
if [ $1 = help ]; then
echo "\e[2m=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[$headname]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\e[0m"
echo "\e[7mㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤ ㅤHelp System * ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ\e[0m"
echo "Coming Soon"
else
if [ $1 = ver ]; then
echo "\e[2m=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[$headname]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\e[0m"
echo "\e[7mㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤSystem Versionㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ\e[0m"
echo "Coming Soon"
if [ $1 = guide ]; then
echo "\e[2m=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[$headname]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\e[0m"
echo "\e[7mㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤSystem Guides ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ\e[0m"
echo "Welcome to the system guides for $headname. Please refer to the online guides"
echo "which are listed on the given manual document for the system found on the"
echo "provided url: \e[4mhttps://unlac.net/guide/manual/ \e[0m Please note that"
echo "we try our very best to update this and add sections per server and system."
echo "\e[1mGuide Ref:\e[0m\e[2m $guideref\e[0m\e[1m Server Name\e[0m\e[2m $server\e[0m"
else
echo "\e[2m=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[$headname]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\e[0m"
echo "\e[7mㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤWelcome, $USERㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ\e[0m"
echo "\e[1mULC Version:\e[0m \e[2m$version | \e[1mAuthor:\e[0m \e[2m$author"
echo " ______ "
echo "| |__| | \e[1m(C) $author, all rights reserved.\e[0m"
echo "| () | \e[1mFor the use of $headname only, please read the\e[0m"
echo "|______| \e[1mulc-net system guide for more information.\e[0m\n"
echo "\e[7mㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤChange Logsㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ\e[0m"
echo "\e[100m05/04/2022 by root,\e[0m\e[1m Welcome to the ULC Systems!\e[0m"
echo "Cheese"
fi
fi
fi
fi
我赋予了它能够被禁用的功能等等。无论如何,每当我运行脚本(例如 sh script.sh)时,它都能工作,但是当我尝试让它在 Ubuntu 的任何地方运行时,它却无法运行。
答案1
尝试将第 1 行从 更改#!/usr/bin
为#!/usr/bin/env bash
。
第一行告诉 shell 使用哪个程序来运行文件。现在它告诉 shell 使用目录/usr/bin
。
由于/usr/bin
不是一个有效的解释器,您会收到此错误。
script.sh: /usr/bin: bad interpreter: Permission denied
请注意,
Permission denied
错误消息与/usr/bin
您的脚本无关。
之所以sh script.sh
有效是因为您将脚本作为参数提供给了有效的解释器。
为了避免此类问题,我建议shellcheck
定期安装并针对脚本运行它。它让我避免了很多愚蠢的错误。