【发布时间】:2020-05-13 03:44:15
【问题描述】:
我有环境变量export MY_WORK_DIR="~/project"。
当我使用以下命令时,它给了我一个错误:
realpath $MY_WORK_DIR
realpath: '~/project': No such file or directory
在我的猜测中,~ 在使用这个环境变量时没有被处理。
顺便说一句,export MY_WORK_DIR=~/project 不适合我。 ~ 应该在字符串中。
您能否指导我如何从环境变量~/project 中获取真实路径?
编辑
对不起。该变量来自其他应用程序,因此我无法修改包含波浪号的环境变量。 (不能选择使用波浪号扩展形式存储变量)。
EDIT2
这样使用eval 命令安全吗? eval "echo ${MY_WORK_DIR}"。它适合我使用。
【问题讨论】:
-
对不起。该变量来自其他应用程序,因此我无法修改包含波浪号的环境变量。 (使用波浪号扩展形式存储变量不是一种选择)。我只想知道如何正确地从波浪号包含的变量中获取真实路径。
-
好的,我重新打开了这个问题。
-
哦。我试过 eval 命令。它按预期工作。使用 eval 命令是否安全? eval "echo ${MY_WORK_DIR}"
-
如果你不能修改环境变量,那么你的选择只有
eval,恐怕。eval realpath "$MY_WORK_DIR",eval 不安全,因为它可以扩展/执行变量中的任意命令(shell 注入 101),所以使用它需要您自担风险...
标签: bash double-quotes tilde-expansion