【发布时间】:2022-10-24 02:35:01
【问题描述】:
$HOME 可以取消设置。因此波浪号~ 是解决方案。
(来源:https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html)
这是我的两个解决方案
HOME="$(cd ~ && pwd)"
和
HOME="$(cd ~ && ${PWD})"
我应该使用哪个? pwd 还是 ${PWD}?还是您有其他/更好的解决方案?
【问题讨论】:
-
为什么不只是
HOME=~? -
您是否知道
HOME可以修改,而~会反映这一点?这可能是好是坏取决于您所说的“防弹”。 -
HOME=$(POSIXLY_CORRECT=1; PATH=/bin:/usr/bin; \unset -f command; command /bin/rbash -c 'IFS=: read -ra h <<<$(getent passwd $(whoami)); echo "${h[5}"') -
@user19264607 分配的 RHS 中的扩展不是单词拆分或 globbed。自己试试吧:
HOME='/some nonexistent path'; c=~; echo "$c"->/some nonexistent path -
@user19264607 是的,如果我们假设
~是可信赖的,则不需要 rbash:HOME=$(POSIXLY_CORRECT=1; \unset HOME; \unset -f builtin; builtin printf '%s' ~)。但也许只要这样做就足够了:unset HOME; HOME=~如果不试图防止恶意调用者,则重置