我正在尝试通过函数动态设置我的提示的一部分,所以在我的.bashrc我有:
asdf ()
{
echo -n $(pwd)
}
PS1="\u@\h:\w $(asdf)\$ "
Run Code Online (Sandbox Code Playgroud)
打开一个 shell 给了我我最初的期望:
$ bash
darthbith@server:~/test /home/darthbith/test$
Run Code Online (Sandbox Code Playgroud)
但是,当我更改目录时,函数定义的部分不会改变:
darthbith@server:~/test /home/darthbith/test$ cd ~/test2
darthbith@server:~/test2 /home/darthbith/test$
Run Code Online (Sandbox Code Playgroud)
我的实际目标是当我使用漂亮的颜色和所有内容时,使用git-prompt.sh脚本来显示我的 git 存储库的分支,但问题是当我更改存储库时它永远不会更新分支名称。上面这个简单的例子是我可以为我的问题想出的最简单的复制品。
在.bashrc我有整合的git-提示台词:
source ~/.git-prompt.sh
PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ "
Run Code Online (Sandbox Code Playgroud) 我有这条线,我.bashrc想知道这到底是什么意思
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Run Code Online (Sandbox Code Playgroud) 我有一个可执行文件。我想在终端中仅像其他命令一样使用名称执行可执行文件。
我可以把我的可执行文件放进去,/usr/local/bin或者我可以把它添加PATH到~/.bashrc. 两者都会起作用。
什么是更好的?有什么区别吗?
当 bash 遇到未知命令(单词?)时,它会执行以下操作:
The program 'hello' can be found in the following packages:
* hello
* hello-debhelper
Try: sudo apt-get install <selected package>
Run Code Online (Sandbox Code Playgroud)
我想知道的是这是如何完成的,所以我可以编辑它或在它之前添加一些东西来交叉检查来自本土词典的未知单词,该词典将有短语:回复对,然后可以发送到输出。
我为周围没有足够的寻找而感到内疚..但是我尝试挖掘的少数 bash 指南对此一无所知。也许我看错了地方……有什么指点吗?
是的,我正在这样做,所以每次我在程序失败时键入 wtf 时,我都希望得到一些好的东西……
我安装了 gnome-terminal 和 Guake。我想在这些终端模拟器启动时显示不同的启动消息。我应该在 .bashrc 中编写什么代码才能实现这一点?
例如,如果我要运行命令adduser test,是否会在为用户创建主目录时自动创建 .bashrc test?如果它不是在用户创建时创建的,它是在什么条件下创建的?
另外,如果我将 .bashrc 文件添加到用户的主目录,它会被操作系统覆盖吗?
提前致谢。
当我在 Ubuntu 中启动终端时,我看到:
ilya@HOST:~$
Run Code Online (Sandbox Code Playgroud)
我需要为此添加一个时间戳,例如:
2011-10-09T09:32:00 ilya@HOST:~$
Run Code Online (Sandbox Code Playgroud)
我该如何配置?
我使用https://unix.stackexchange.com/a/1292/41729 中的答案来启用不同 bash 终端之间的实时共享历史记录。正如上面的答案所解释的,这是通过添加以下内容来实现的:
# avoid duplicates..
export HISTCONTROL=ignoredups:erasedups
# append history entries..
shopt -s histappend
# After each command, save and reload history
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Run Code Online (Sandbox Code Playgroud)
如果 bash shell 是单独的(例如,使用CTRL+ALT+T.打开不同的 bash 终端),这可以正常工作。但是,如果我使用tabs(从打开的终端 `CTRL+SHIFT+T)而不是新窗口,它就不起作用。为什么会有这种行为差异?如何我也可以在各个选项卡之间共享 bash 历史记录吗?
更新:我注意到一个不寻常的行为:如果我输入,CTRL+C则在任何其他终端(无论是否为选项卡)中输入的最后一个命令都会正确显示。就像 CTRL+C 强制刷新历史记录以便正确共享一样。
例如输出(T1 表示端子 1 和 T2 端子 2):
T1:
ls -lah <enter>
# the list of files and directory is shown
T2:
cd Documents <enter>
T1:
<up> (i.e. …Run Code Online (Sandbox Code Playgroud) 我使用 bash 脚本启动带有多个选项卡的 gnome-terminal,每个选项卡使用不同的配置文件、工作目录,并且在某些情况下在选项卡中执行命令。
在这种情况下,我希望使用向上箭头键来检索在特定选项卡中使用的命令。这可能吗?
如何在 bash 提示中使用这些红色和绿色箭头标志?
这是我的.bashrc 文件
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\
[\033[01;34m\]? \w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}? \w\$ '
fi
unset color_prompt force_color_prompt
Run Code Online (Sandbox Code Playgroud)
我希望这个箭头被着色为@dessert 之前的回答(为 false 和 true 命令变成红色和绿色)