![我怎样才能告诉我的程序保存在~](https://linux22.com/image/85191/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E5%91%8A%E8%AF%89%E6%88%91%E7%9A%84%E7%A8%8B%E5%BA%8F%E4%BF%9D%E5%AD%98%E5%9C%A8~.png)
我正在使用一个程序来处理一些数据,然后将其保存到文件中。可以指定保存数据的目录,但是程序写得不好,所以如果我输入~
它,则无法解释结果并说找不到指定的目录/~
。
我希望能够将这个程序提供给我的同事并让他们运行它。我可以直接指定保存在 中/home/my_username/
,但是当他们尝试运行它时,他们也会得到“找不到目录”,因为他们的主文件夹具有不同的名称。
我可以~
以其他方式指定我的同事可以运行该程序并将其数据保存在各自的主目录中吗?
答案1
请注意~
被 shell 扩展为 的值${HOME}
,您不能将其作为程序的输入输入并期望它自动将其转换为${HOME}
(除非您将其指定为程序的命令行选项,这使 shell执行替换的机会)。
如果您想写入主目录,您可以让您的程序查找${HOME}
环境变量。那么无论是谁,无论家在哪里,你都会得到正确的答案。
答案2
我倾向于建议尝试.
(是的,只是一个点)。这意味着当前目录。
因此,如果程序从用户的主目录运行,那么它将保存其数据。
答案3
我建议使用/tmp
.它是全局可写的(或者,至少,如果它不是全局可写的,那么您遇到的问题比使用哪个目录要大得多!)。
答案4
如果 ${HOME} 不能按照 Andy 的建议工作,您可以尝试 /proc/self/cwd/。
或者,无论您如何配置此路径,只需为将其分发到的每个用户配置不同的路径即可。
或者不直接运行程序,而是在脚本中运行它。该脚本可以设置路径,但是您现在正在执行此操作,或者它可以 cd 到数据目录,然后按路径运行程序,您可以配置“。”作为数据目录。