我编写了一个小 bash 脚本来查看当我继续跟踪指向同一目录的符号链接时会发生什么。我期待它要么创建一个很长的工作目录,要么崩溃。但结果让我大吃一惊...
mkdir a
cd a
ln -s ./. a
for i in `seq 1 1000`
do
cd a
pwd
done
Run Code Online (Sandbox Code Playgroud)
一些输出是
${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
${HOME}/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
${HOME}/a
${HOME}/a/a
${HOME}/a/a/a
${HOME}/a/a/a/a
${HOME}/a/a/a/a/a
${HOME}/a/a/a/a/a/a
${HOME}/a/a/a/a/a/a/a
${HOME}/a/a/a/a/a/a/a/a
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
所以维基百科(链接)告诉我该命令pwd是“打印工作目录”的缩写,这是有道理的。
但是对于环境变量,“P”必须是打印以外的其他内容的首字母缩写词。
我听到人们谈论“当前工作目录”,这听起来更好,更直观,但环境变量似乎仍然被称为 $PWD,而不是 $CWD。从来没有人说“你检查了打印工作目录变量了吗?”。
我目前正在使用 web 应用程序服务器 uWSGI,运行时它告诉我(在 uWSGI 统计页面上):
"cwd":"/home/velle/greendrinks",
Run Code Online (Sandbox Code Playgroud)
所以他们显然喜欢(更直观的首字母缩写词)cwdover pwd。
我想我想弄清楚是我误解了什么,还是只是给环境变量一个不直观的名字?
例如,我一直试图在我的脚本文件中说“目前有 10 个人在线”。
如果没有下一行的“目前在线人员”部分,我似乎永远无法使命令工作。
目前,我有
w='who | wc -l'
echo "There are $w people online at the moment"
Run Code Online (Sandbox Code Playgroud)
但是,我总是以输出结束
There are who | wc -l users online at the moment
Run Code Online (Sandbox Code Playgroud)
你如何让命令在中间工作?我一直在尝试查看和复制示例,但它似乎对我的命令替换问题没有帮助。