如何在bashrc文件中定义文本编辑器?

3
我试图在~/.bashrc中设置一个包含我的编辑器的变量。不幸的是,它似乎没有生效。
# ~/.bashrc
export EDITOR=sublime

在终端中:

source ~/.bashrc
echo $EDITOR
=> nothing

如何设置并持久化这个变量?

编辑

这是我的当前 .bashrc 文件:

source ~/.profile # Get the paths
source ~/.bashrc  # get aliases

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting


### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"

export EDITOR=sublime

通常你会把环境变量放在你的 .profile 或 .bash_profile 文件中,视你使用哪一个而定。 - glenn jackman
1
这对我有效。你在其他地方“unset”了这个变量吗? - pfnuesel
我不确定如何取消设置@pfnuesel。但是我有一些奇怪的事情,就是当我运行“source ~/.bashrc”时,会出现“[Process completed]”这一行,但我无法返回终端提示符。它只是阻塞了终端。 - Peter Nixey
你的.bashrc文件中是否有exit语句?如果无法返回终端提示符,如何调用echo $EDITOR?你能展示一下你的.bashrc文件内容吗? - pfnuesel
@pfnuesel - 我刚刚添加了它。 - Peter Nixey
2个回答

0

.bashrc 只有在新的 shell 创建时才会被读取,而不是在您登录时读取。如果您希望您的 .bashrc 在登录时也被读取,您需要将以下行添加到您的 $HOME/.bash_profile$HOME/.profile 文件中:

[ -x $HOME/.bashrc ] && . $HOME/.bashrc

请注意,$HOME/.bashrc 文件必须对用户可读和可执行。也就是说,文件权限必须为 5..7.. 才能正常工作。请确保您的文件权限设置正确。

非常抱歉,我不知道如何对此进行评论,因为我完全不了解bash。我不知道什么构成了登录(登录计算机)或创建新shell(打开新的终端窗口?)。我意识到这些都是完全新手问题,但不知何故,我成功地生存下来,对bash知之甚少! - Peter Nixey
1
不需要道歉。在旧的哑终端时代,您将登录到基于文本的终端,并运行您的“_login_”脚本(使用BASH,这将是$HOME/.bash_login或如果不存在,则为$HOME/.profile)。当您运行一个shell脚本时,它会执行您的“_resource_”文件(在BASH中,这将是$HOME/.bashrc)。现在情况有点更加复杂。如果我记得没错,在Solaris上,打开新的Xterm会运行.bashrc而不是.bash_profile。(好吧,这是在BASH之前,但它运行了Kornshell的等效物。在MacOS X上,打开一个新的终端窗口会运行$HOME/.bash_profile - David W.
正如我之前的评论所解释的那样:今天它更加复杂。一个 shell 脚本启动一个新的 shell(或者输入 bash 命令),然后运行 .bashrc。有时候当你打开一个新的终端窗口时,它被认为是一个新的 _shell_,并且 $HOME/.bashrc 将会执行。有时候,它被认为是一个新的登录,$HOME/.bash_profile 就会被执行。我的建议是在 .bash_profile.bashrc 中放置一个 echo 语句,看看当你打开一个新窗口时你会看到哪个 echo 语句。 - David W.
顺便说一下,我还没有接受你的答案的唯一原因是我还不能确认它是否是有效的解决方案。不过一旦我确认了,我会立即接受的。 - Peter Nixey

0

根据您的操作系统,检查您的 .bash_profile 或 /etc/bash.bashrc 文件

如果您的 .bashrc 没有被引用,那么它也不会被读取。您只需要引用您的文件或将您的导出命令放入某个文件中即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接