我有一个数组
snapshots=(1 2 3 4)
当我跑步时
printf "${snapshots[*]}\n"
它按预期打印
1 2 3 4
但当我跑步时
printf "${snapshots[@]}\n"
它只是打印
1
没有换行符。我的理解是,访问数组@
应该会扩展数组,因此每个元素都在换行符上,但它似乎不会这样做,printf
而它确实会这样做echo
。为什么是这样?
我有一个数组
snapshots=(1 2 3 4)
当我跑步时
printf "${snapshots[*]}\n"
它按预期打印
1 2 3 4
但当我跑步时
printf "${snapshots[@]}\n"
它只是打印
1
没有换行符。我的理解是,访问数组@
应该会扩展数组,因此每个元素都在换行符上,但它似乎不会这样做,printf
而它确实会这样做echo
。为什么是这样?
标题基本上说明了一切,但我一生都无法弄清楚,并且对 bash 正则表达式匹配感到困惑。这是if
我在 bash 脚本中的语句,但它始终匹配该行${new_user}
而不是# ${new_user}
. 我基本上想匹配一个“注释掉”的用户。
if [[ $(<"foo.txt") =~ \#.*${new_user} ]]; then
在故障排除中vi
,我注意到在我的 Ubuntu 安装中运行命令sudo env | grep HOME
会返回运行命令的用户的主目录 ( /home/USER
)。但我注意到在我的 Linux Mint 安装上运行命令sudo env | grep HOME
returns /root
。我在两台计算机上都看过/etc/sudoers
,除了一个Defaults mailto=
条目外,它们是相同的。他们都有Defaults env_reset
。如何sudo
确定如何设置HOME
环境变量?我在别处看到 ( https://unix.stackexchange.com/a/174587/471273 )sudo -V
告诉你保留了哪些环境变量,但在两台计算机上它只告诉我版本sudo
和它安装的插件。我也看到在sudo
手册页这一部分让我觉得我需要询问如何查看我不知道该怎么做的安全策略。
-H, --set-home
Request that the security policy set the HOME environment
variable to the home directory specified by the target user's
password database entry. Depending on the policy, this may
be the default behavior.
当.vimrc
我vim
以sudo
. 我可以将 复制.vimrc
到/root
目录,但我对这种行为和sudo
.