Bash - 仅当脚本从特定目录运行时才允许执行

Bash - 仅当脚本从特定目录运行时才允许执行

我需要编写一个 shell 脚本,该脚本只有从当前登录用户的主目录运行时才能执行,但我不知道如何从脚本本身检查这一点。如能得到任何帮助,我将不胜感激。

答案1

您可以使用环境变量 PWD 和 HOME:$PWD是当前工作目录,而$HOME是当前用户的主目录。您可以在脚本中的可执行语句前面加上:

if [ "$PWD" != "$HOME" ]; then exit; fi

您可以选择向命令添加错误代码exit,以防调用 shell 想要检查脚本的成功或失败。

另一个有用的变量是 OLDPWD:$OLDPWD是上次目录更改之前的上一个目录。您可以使用它使脚本从任何地方运行,方法是将脚本括在以下内容中:

cd "$HOME"
. . . . . .
cd "$OLDPWD"

这假定脚本中没有其他目录更改;如果没有,则使用INITPWD="$PWD"first 并返回$INITPWD。事实上,在大多数情况下,脚本将在子 shell 中运行,因此没有必要更改回原始目录,因为初始目录cd不会影响父 shell。

答案2

可以在脚本的开头使用: LOCATION=/path/to/script if [ "PWD" != "$LOCATION" ]; then cd $LOCATION

相关内容