小编Mat*_*ias的帖子

在不重新启动终端应用程序 (mac) 的情况下从终端重新启动 bash?

我环顾四周,寻找这个问题的答案,但我似乎没有找到(这很奇怪)。

我的问题是,是否有任何简单的方法可以从 Mac 上的终端内重新启动 BASH 会话。我只想要与关闭终端应用程序并再次启动它相同的行为(所有变量重置、.bash_profile来源等)。

我知道如何获取.bash_profile,但这不是我想要的。我想要这样做的原因之一是因为我的 BASH 提示插件有防止颜色被多次加载的代码。因此,采购.bash_profile不会重新加载颜色变量,我必须重新启动终端应用程序才能使更改生效。

shell bash

80
推荐指数
2
解决办法
17万
查看次数

bash变量赋值中的单括号

我想知道 bash 中的单括号。我知道它们用于在子 shell 中执行命令以及它们用于创建数组,但它们是否用于其他任何用途?

引起我注意的一件事是,当您使用 in 变量赋值时,例如

var=(hello)
echo $var    # hello
Run Code Online (Sandbox Code Playgroud)

bash 不会产生错误或任何东西,并且输出与 if 相同

var=hello
Run Code Online (Sandbox Code Playgroud)

这两个变量定义相同还是有区别?

bash array

17
推荐指数
1
解决办法
8882
查看次数

成功的子 shell 命令的 Bash 测试返回 false

我不太理解 bash 测试操作员的这种行为。我用这一行来确定是否安装了 vagrant。

if [ $(vagrant --version > /dev/null) ]; then echo "HELLO"; fi
Run Code Online (Sandbox Code Playgroud)

我现在知道这会返回 false (1) 并且您应该只输入

if vagrant --version > /dev/null; then echo "HELLO"; fi
Run Code Online (Sandbox Code Playgroud)

以获得预期的结果。但我仍然不明白为什么 [ $(vagrant --version > /dev/null) ] 返回 false (1)。它不应该返回 true (0) 因为

$(vagrant --version > /dev/null)
Run Code Online (Sandbox Code Playgroud)

返回 true,这是一个表达式(不是吗?)。

来自测试手册页:

测试实用程序计算表达式,如果计算结果为 true,则返回零 (true) 退出状态;否则返回 1(假)。如果没有表达式,test 也返回 1 (false)。

bash test

5
推荐指数
1
解决办法
2913
查看次数

Bash 无法正确计算提示长度

我在这个问题上搜索了很多,发现了一些相关的问题,比如这个:终端提示没有正确包装

我的问题是 bash 没有正确计算提示的长度,当我执行诸如ctrl-r?滚动历史记录之类的事情时,这会把它搞砸。这基本上就是它的外观(没有颜色)。

? name@machine ~

01:09 $
Run Code Online (Sandbox Code Playgroud)

例如,当我使用向上箭头滚动浏览以前的命令时,某些字符会卡在提示中:

? name@machine ~

01:09 $m
Run Code Online (Sandbox Code Playgroud)

有时我也会遇到其他奇怪的行为,比如一些提示被覆盖(当我重新加载它时它会消失)。我的提示是这样的:

GIT_PROMPT_START_USER="\n_LAST_COMMAND_INDICATOR_ \[$Magenta\]\u\[$Orange\]@\[$White\]\h \[$Yellow\]\[$PathShort\]\[$ResetColor\]"

GIT_PROMPT_END_USER="\n\[$Blue\]$Time12a\[$ResetColor\] $ "
Run Code Online (Sandbox Code Playgroud)

我使用的东西叫做git-bash-prompt:> https://github.com/magicmonty/bash-git-prompt >。

我认为搞砸的是时间变量,它在另一个文件中定义:

Time12a="\$(date +%H:%M)"
Run Code Online (Sandbox Code Playgroud)

我已经尝试了\[$Time12a\]$Time12ain GIT_PROMPT_END_USER,但它们似乎都不起作用。我的猜测是 bash 计算错误,因为$Time12a表示 5 个字符 (hh:mm)。

bash 是如何计算这个长度的?是否可以明确设置 bash 的长度?答案非常感谢!

bash prompt

3
推荐指数
1
解决办法
1455
查看次数

标签 统计

bash ×4

array ×1

prompt ×1

shell ×1

test ×1