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

Eut*_*rpy 4 unix bash shell-script ubuntu

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

AFH*_*AFH 5

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

if [ "$PWD" != "$HOME" ]; then exit; fi
Run Code Online (Sandbox Code Playgroud)

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

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

cd "$HOME"
. . . . . .
cd "$OLDPWD"
Run Code Online (Sandbox Code Playgroud)

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