我需要编写一个 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