我正在使用这个:
$(__git_ps1 '(%s)')
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是当我更改目录或签出新分支时它不会更新。我也有这个别名:
alias reload='. ~/.bash_profile'
Run Code Online (Sandbox Code Playgroud)
示例运行:
user@machine:~/dev/rails$cd git_folder/
user@machine:~/dev/rails/git_folder$reload
user@machine:~/dev/rails/git_folder(test)$git checkout master
Switched to branch 'master'
user@machine:~/dev/rails/git_folder(test)$reload
user@machine:~/dev/rails/git_folder(master)$
Run Code Online (Sandbox Code Playgroud)
如您所见,它设置正确,但前提是我重新加载 bash_profile。我在这上面浪费了很多时间。我在雪豹上使用 bash。请帮忙!
编辑:您可以在 github 上看到我的 dotfiles 以及在此处设置 PS1 的文件
我需要偶尔使用当前时间戳作为文件名的文件。我会这样做:
touch `date "+%Y-%m-%d_%H-%M"`.txt
Run Code Online (Sandbox Code Playgroud)
但是,我想为此定义一个别名。当我尝试添加到 bashrc 时:
alias td="touch `date \"+%Y-%m-%d_%H-%M\"`.txt"
Run Code Online (Sandbox Code Playgroud)
结果是文件名在整个会话期间是相同的,因为在登录期间只计算了一次“日期..”...
仅当我调用别名时,如何才能让命令展开?或者我必须为此使用一个函数?
谢谢
除了我自己的电脑,我有时会在学校使用 Ubuntu 集群。与其手动保持我的 .bashrc 同步,我想让学校集群的 .bashrc 源通过 URL 从 DropBox 成为我的个人 .bashrc 。但是,当我天真地尝试时source http://myurl,我只会收到一个错误:http://myurl: No such file or directory. 如何从位于在线的脚本中获取 bash 源代码?
最坏的情况是,我可以卷曲到一个命名管道并获取它。还有更优雅的吗?
我在 /usr/share/scripts/ 上有一些我经常使用的 python 脚本,我希望能够通过只写名称而不是完整路径来执行它们,我该怎么做?
echo $PATH 显示我:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer
Run Code Online (Sandbox Code Playgroud)
所以我尝试在终端上写:
PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export
Run Code Online (Sandbox Code Playgroud)
没有显示错误并且 echo $PATH 现在显示我的新脚本路径,但是当我运行scriptName时,我找不到命令。
我究竟做错了什么?
我想我在添加路径时有一个错字~/.bashrc,在我找到它之后,我不能再使用 bash 命令了。
现在我想恢复正常~/.bashrc,但是我发现的大部分讨论(例如如何修复被错误编辑的 .bashrc?)需要使用 bash 命令,例如cp
clam@cuerei:~# cp /etc/skel/.bashrc ~
cp: /home/cltam/script/lib/libc.so.6: version `GLIBC_2.17' not found (required by cp)
Run Code Online (Sandbox Code Playgroud)
我可以知道如何在~/.bashrc不使用 bash 命令的情况下进行恢复吗?
谢谢你。
我在 .bashrc 中添加了新别名
运行 .bashrc 不会创建该别名,但新登录是。
你能解释一下为什么会这样,我如何测试新的 .bashrc 是否可以在不进行测试登录的情况下工作?
如果我gnome-terminal在路径包含符号链接的工作目录中使用,并且我打开一个新选项卡,则符号链接将扩展到新选项卡工作目录中的目标位置。
打开新标签页时,有没有办法保留符号链接?
在切换到使用.bashrc而不是.bash_profile(我不喜欢默认终端如何使用一个配置文件和实用程序screen与另一个一样)后,iterm2 的行为发生了变化。以前,当我手动设置选项卡标题时,除非我ssh进入另一台服务器,否则它们将保留在那里,此时标题将更改为username@otherservername: /location/in/other/servers/filesystem. 现在,当我更改选项卡标题时,它们将保持不变,直到我在该选项卡中执行的第一个命令。一旦我运行了一些东西,选项卡标题就会切换到myusername@mymacname: /my/location/in/my/mac/filesystem.
使用命令行参数echo -ne "\e]1;tab title\a"并没有帮助。它确实切换了(足够慢以注意到屏幕上的标题更改),但是当命令退出时,标题又回到了原来的位置:myusername@mymacname: /my/location/in/my/mac/filesystem。
理想情况下,我希望标签标题永远不会自动切换,包括当我ssh进入另一台服务器时。如果这不可能,我想回到以前的行为:只要我在本地机器上,就保留我设置的标签标题。可以做到吗?
这是我的 .bashrc 文件:
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
# don't overwrite …Run Code Online (Sandbox Code Playgroud) 名称中包含“rc”的文件有很多,但是“rc”是什么意思呢?
听起来大多数终端模拟器默认情况下不会以登录身份运行本地会话,因此它们将加载 bashrc 而不是 bash_profile。那么为什么大多数人将所有内容都放在 bash_profile 中并让 bashrc 提供它,而不是相反呢?“大多数人”是指迄今为止我见过的大多数人。也许它没有我想象的那么普遍。
与其将我们的配置放在那里并拥有 bashrc 源 bash_profile,将所有内容都放在 bashrc 中并拥有 bash_profile 源不是更有意义并且与 linux 社区更一致吗?
我听说过关于 iTerm2 的好消息,听起来是这样,几乎所有其他终端仿真器(默认的 OSX 终端除外)都会在我本地运行时加载 bashrc。并不重要,只要一个来源另一个,但我很困惑为什么更喜欢 bash_profile 是标准?
次要注意事项:我对 iTerm2 有误解。它默认运行登录会话,就像 Terminal.app 一样,尽管两个模拟器似乎都有一个选项可以让你改变它。