标签: bashrc

gnome-terminal 不允许更改标题

我在 gnome-terminal 的首选项中选择了“替换初始标题”设置,但它只显示默认标题“终端”。阅读此答案后,我将其添加到我的.bashrc:

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
Run Code Online (Sandbox Code Playgroud)

并注释掉了这一行:

#PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Run Code Online (Sandbox Code Playgroud)

重新启动终端后,它开始显示user@hostname: ~/currentdir在其标题中,每当我cd转到另一个目录时就将其更改。但是当我启动像cmusand 之类的 CLI 程序时它仍然没有改变vim(例如,vim 将当前文件名设置为标题)。

我已经安装rxvt,一切正常。

Ubuntu 13.04,gnome 终端 3.6.1。

我的 .bashrc - 几乎与默认 ubuntu 安装附带的相同。

终端截图

command-line gnome-terminal bashrc

7
推荐指数
1
解决办法
3596
查看次数

我的 PATH 变量在哪里设置?

我正在尝试将我的路径变量设置为如下所示:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jgrande/android-sdk-linux/platform-tools:/usr/lib/jvm/java-7-openjdk-amd64/bin/:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin
Run Code Online (Sandbox Code Playgroud)

并且出于某些原因,无论我编辑什么文件,该变量总是看起来像这样(java 路径重复了很多次):

PATH=/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin
Run Code Online (Sandbox Code Playgroud)

我试图编辑我的个人.bashrc和.profile以及/etc/environment,/etc/bash.bashrc,/etc/profile,并将其设置/etc/profile.d。现在,有jdk.sh在/etc/profile.d其中PATH变量是相同的不正确的一个I张贴以上。但是,我试图注释掉该行甚至jdk.sh完全删除,但仍然没有解决。

否则,我已经注意到,如果我以另一个用户身份登录,我将拥有正确的 PATH 变量,并且不会让 java 重复一堆乱七八糟的变量。

所以,我想知道,我还没有检查过的 PATH 变量还能在哪里定义?

bash java .profile environment-variables bashrc

7
推荐指数
2
解决办法
7458
查看次数

如何修改“/etc/bash.bashrc”?是只读的吗?

尝试修改时/etc/bash.bashrc出现错误:

$ echo "my edit" >> /etc/bash.bashrc
bash: /etc/bash.bashrc: Permission denied
Run Code Online (Sandbox Code Playgroud)

ls -ll /etc/bash.bashrc 显示:

-rw-r--r-- 1 root root 1975 2011-05-18 19:54 /etc/bash.bashrc
Run Code Online (Sandbox Code Playgroud)

我怎么能修改/etc/bash.bashrc?

command-line bash bashrc

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

我怎样才能唯一地记录我使用的每个新命令,并可能给它加上时间戳?

我已经使用 Linux 超过 6 个月了,但从来没有过多地使用 CLI(命令行界面或终端或 shell)

现在,当我在这里提问、获得答案或从其他站点获得帮助时,我学习了新命令...

如何将每个新命令存储在文本文件中?只有新的/独特的命令,而不是相同命令的重复。

下面是一个例子:

  1. 在终端中,我输入这样的命令-
$  command1
$  command2
$  command3
$  command4
$  command1
Run Code Online (Sandbox Code Playgroud)
  1. 现在,这些命令应该保存在一个文本文件中,commandrec就像这样
command1
command2
command3
command4
Run Code Online (Sandbox Code Playgroud)

注意: 终端中再次出现的最后一个命令command1不会再次记录/保存在文本文件中。

下次我打开终端并输入新命令时command 5,它应该附加到列表中commandrec

(但如果该命令在其他日期较早使用过,则仍应忽略它。例如,在新的日期/时间command 1再次输入但未记录为已使用)command 5command1

  1. 该commandrec文件将看起来像这样
31/05/12 12:00:00
command1
command2
command3
command4
01/06/12 13:00:00
command 5
Run Code Online (Sandbox Code Playgroud)

(如果可能的话,时间和日期的事情会很棒,但即使不存在也没关系)

这样,我可以记录我迄今为止使用的所有命令。

如何才能做到这一点?

command-line bash bashrc

6
推荐指数
3
解决办法
1954
查看次数

我的 bash 功能在每个终端打开时只运行一次

当我尝试在同一终端中第二次运行 .bashrc 中定义的 bash 函数时,它不起作用。

代码如下:

function nos (){
    local option
        while getopts cs option
            do
            case $option in
                s)
                    #start my server
                ;;
                c)
                    local cdir="~/mydirectory"
                    local cdir_arg=""
                    case $OPTARG in
                        p)
                            local cdir_arg="anotherdirectory"
                        ;;
                    esac
                    local cdir="${cdir}${cdir_arg}"
                    cd $cdir
                    ;;
                *)
                    echo 'This function doesnt have Super Cow Powers'
                    return 1
                ;;
            esac
    done
}
Run Code Online (Sandbox Code Playgroud)

我运行这个:

nos -c
Run Code Online (Sandbox Code Playgroud)

它转到 ~/mydirectory

好的,工作了。

但后来我这样做:

cd ~
nos -c
Run Code Online (Sandbox Code Playgroud)

什么也没有发生。

bash scripts bashrc

6
推荐指数
1
解决办法
1004
查看次数

提示不更新 git 分支

我试图在我的提示中集成当前的 git 分支,但它没有按预期运行。我在 ubuntu 16.04 和 git 2.7.4 上使用 bash。当我启动终端时,没有显示任何 git。如果我.bashrc从存储库内部获取我的分支,则会显示分支,但不再更新。这是我在 .bashrc 中写的:

green="\[\033[01;32m\]"
blue="\[\033[01;34m\]"
no_color="\[\033[00m\]"
purple="\[\033[01;35m\]"

source ~/.git-prompt.sh
export PS1="$purple\u $green$(__git_ps1 " (%s)") $blue\W $no_color \$ "
Run Code Online (Sandbox Code Playgroud)

更新:

我尝试按照git-prompt 中的说明进行操作,但结果仍然相同。但是,如果我只是从 git-prompt 复制建议:PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '它有效,但当然看起来不像我想要的。我遗漏了一些语法错误吗?即使不使用导出,模板 PS1 也能工作,只是PS1=...

bash git bashrc

6
推荐指数
1
解决办法
4732
查看次数

在 bash 中显示 git branch 的脚本不再适用于 ubuntu 18.04

在我的 16.04 安装中,我把它放在我的~/.bashrc文件中:

#Show git branch in commandline
parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u:\[\033[01;34m\]\w\[\033[00m\]\$(parse_git_branch)\[\033[00m\] $ "
Run Code Online (Sandbox Code Playgroud)

它显示了这样的提示:

user:~/myrepo (master) $
Run Code Online (Sandbox Code Playgroud)

但是当我在 18.04 上做同样的事情时,提示看起来像这样:

user:~/myrepo $ 
Run Code Online (Sandbox Code Playgroud)

我如何让它在 18.04 中工作?

$ printf "%q\n" "$PS1" "$PROMPT_COMMAND" "$0" "$SHELL"
\\\[\\033\[01\;32m\\\]\\u:\\\[\\033\[01\;34m\\\]\\w\\\[\\033\[00m\\\]\$\(parse_git_branch\)\\\[\\033\[00m\\\]\ \$\ 
''
bash
/bin/bash
Run Code Online (Sandbox Code Playgroud)

我正在使用sed (GNU sed) 4.4和GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)。这是一个“全新”安装,因此.bashrc.

bash prompt git bashrc

6
推荐指数
2
解决办法
6081
查看次数

WSL:检测“Open Linux Shell Here”案例是否有条件?

当我通过单击其图标打开 WSL 时,我需要在某个目录(当然比 更有用的目录)中打开它System32,因此我cd destination在.bashrc. 但是然后“在此处打开 Linux Shell”选项(当您按住Shift键盘上的键并右键单击任何文件夹时可用)也被重定向到该目的地,这是不可取的。有没有办法可以在我的.bashrc脚本中检测到这种情况让它表现得像它应该的那样?

简而言之,我需要知道何时通过文件夹内的Shift+右键单击中的选项打开外壳,这样我就可以避免将工作目录更改为另一个目录。

我正在使用WSL-Ubuntu 18.04 LTS和GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)。

bashrc windows-subsystem-for-linux

6
推荐指数
1
解决办法
244
查看次数

安装后找不到adb命令

我已经从终端安装了 adb。但是当我输入“adb version”时,找不到它。谁能帮我解决这个问题吗?

在此输入图像描述

bashrc adb software-installation

6
推荐指数
1
解决办法
6586
查看次数

Ubuntu Desktop:为什么 .profile 脚本在交互式非登录 shell 中执行?

我了解交互式登录和交互式非登录之间的区别

\n

根据这篇优秀的文章:Zsh/Bash 启动文件加载顺序(.bashrc、.zshrc 等),我们有下表

\n
+----------------+-----------+-----------+------+\n|                |Interactive|Interactive|Script|\n|                |login      |non-login  |      |\n+----------------+-----------+-----------+------+\n|/etc/profile    |   A       |           |      |\n+----------------+-----------+-----------+------+\n|/etc/bash.bashrc|           |    A      |      |\n+----------------+-----------+-----------+------+\n|~/.bashrc       |           |    B      |      |\n+----------------+-----------+-----------+------+\n|~/.bash_profile |   B1      |           |      |\n+----------------+-----------+-----------+------+\n|~/.bash_login   |   B2      |           |      |\n+----------------+-----------+-----------+------+\n|~/.profile      |   B3      |           |      |\n+----------------+-----------+-----------+------+\n|BASH_ENV        |           |           |  A   |\n+----------------+-----------+-----------+------+\n|                |           |           |      |\n+----------------+-----------+-----------+------+\n|                |           |           |      |\n+----------------+-----------+-----------+------+\n|~/.bash_logout  |    C      |           |      |\n+----------------+-----------+-----------+------+\n
Run Code Online (Sandbox Code Playgroud)\n

第一个链接引用了另一篇优秀的文章:清理 bash 自定义,其中提供了有关交互式登录和交互式非登录的出色解释,如下所示:

\n
\n

交互式登录shell 是您正在输入的 …

bash .profile environment-variables bashrc

6
推荐指数
1
解决办法
1364
查看次数