我有一个 .bashrc 文件,我想设置它以便它从 .aliases 文件读取别名并设置它们。
目前我有:
# User specific aliases and functions
while read alias_line
do
echo `alias ${alias_line}`
done < .aliases
Run Code Online (Sandbox Code Playgroud)
但是登录后我得到:
-bash:别名:-fu:未找到 -bash:别名:$USER”:未找到
-bash:别名:-lart”:未找到
.aliases 文件是这样的:
psu="ps -fu $USER" ll="ls -lart"
pico='nano'
我不知道这是否符合预期,但我的历史记录不会跨会话保存。这就是说,如果我关闭窗口,那么当我再次打开它时,历史记录是空的。我怎样才能跨会话坚持它?
以下是您询问的命令的输出:
set -o | grep history
history on
$ grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profile
/cygdrive/c/cygwin/home/car/.bashrc:# Make bash append rather than overwrite the history on disk
/cygdrive/c/cygwin/home/car/.bashrc:# History Options
/cygdrive/c/cygwin/home/car/.bashrc:# Don't put duplicate lines in the history.
/cygdrive/c/cygwin/home/car/.bashrc:# export PROMPT_COMMAND="history -a"
grep: /cygdrive/c/cygwin/home/car/etc/bash.bashrc: No such file or directory
grep: /cygdrive/c/cygwin/home/car/etc/profile: No such file or directory
/cygdrive/c/cygwin/home/car/.profile:if [ "x$HISTFILE" == "x/.bash_history" ]; then
/cygdrive/c/cygwin/home/car/.profile: HISTFILE=$HOME/.bash_history
$ ls -la ~/ | grep history -> no output
$ echo $HISTFILE …Run Code Online (Sandbox Code Playgroud) 我有一些导出和其他需要运行另一个程序的东西(以获取路径或其他任何东西),并且它们需要很长的时间来运行,这意味着我的 bash 启动时间大约为 5 秒。
在我开始添加一些基本缓存之前.bashrc,有没有一种方法可以异步运行一些东西,让我在运行的 shell 中导出变量?
(所以,这真的不仅限于.bashrc,而是一般的 bash。)
my 中有一个部分~/.bashrc,它将 $EDITOR 设置为 gvim。当我在 X 窗口时它工作正常。但是,如果我 ssh 到我的工作站(从另一个工作站),gvim 开始抱怨“无法打开显示”。
因此我想if在 bashrc 中声明,如果 X 窗口可用,则使用 gvim,否则就使用 vim。
我怎么能做到这一点?
我最近安装了一个 Arch-Linux 系统。如果我输入
echo $PATH
Run Code Online (Sandbox Code Playgroud)
它(除其他外)指向我内部的一个目录,我/home/user/dir记得我在某处设置过。我也有它作为 root 用户,所以它不能~/.bashrc在/root/.bashrc. 我也在里面看了看/etc/profile,/etc/bash.bashrc但在那里也找不到。
有没有办法找到它的设置位置?
注意:请参阅下面我的第二次编辑以获取有关该问题的更新。
直到上周,Cygwin 对我来说都很好。现在 .bashrc 没有得到来源。我一定安装了一些东西或改变了一些东西,但我不记得到底是什么导致了这个问题。当我启动 Cygwin 时,我在我的 Windows 家中并且我的别名都不起作用。我必须手动获取 .bashrc。以下是我的 Cygwin.bat:
@echo off
C:
chdir C:\cygwin\bin
set CYGWIN=tty notitle glob
bash --login -i
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑:我的 .bash_profile 包含以下内容,
# source the users bashrc if it exists
if [ -f "${HOME}/.bashrc" ] ; then
source "${HOME}/.bashrc"
fi
Run Code Online (Sandbox Code Playgroud)
EDIT2:重要!当我启动 Cygwin 时,它会在我的 Windows 主文件夹中启动。我试着把我的 .bash_profile 和 .bashrc 放在这个文件夹中,它们的来源是正确的!这意味着问题已简化为弄清楚为什么 Cygwin 在 Windows 主文件夹中启动,而不是在正常的 Cygwin 主文件夹中启动。
EDIT3: 运行 grep Gulshan /etc/passwd/ 的结果
$ grep Gulshan /etc/passwd
Administrator:unused:500:513:U-Gulshan-HP\Administrator,S-1-5-21-1235613160-4193452482-2032876723-500:/home/Administrator:/bin/bash
Guest:unused:501:513:U-Gulshan-HP\Guest,S-1-5-21-1235613160-4193452482-2032876723-501:/home/Guest:/bin/bash
Gulshan:unused:1000:513:U-Gulshan-HP\Gulshan,S-1-5-21-1235613160-4193452482-2032876723-1000:/home/Gulshan:/bin/bash
Run Code Online (Sandbox Code Playgroud) 由于我目前在我的提示中尝试新东西,我需要一种方法来判断性能影响是什么。
我如何监控呈现提示所需的时间以及获取 .*rc 所需的时间?
我正在使用这个:
$(__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 的文件
每次登录 SSH 时,我都必须手动获取 bashrc 文件的来源,以按照我想要的方式设置路径变量。我如何让 bash 自动执行?不应该是自动的吗?
在 Ubuntu 18.04 LT .bashrc 文件中有以下内容:
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
Run Code Online (Sandbox Code Playgroud)
xterm-color) 不是不平衡括号的实例吗?为什么该行以两个分号结尾?
需要说明的是,这不是我写的。它在原始文件中,不是我编辑的。
如果有语法错误,我应该向谁报告?