这是尴尬的,但经过多年的使用POSIX系统充分的时间,我仍然有一个很难搞清楚,如果一个shell定制应该进去.bashrc,.profile或者别的地方。更不用说一些特定于操作系统的配置文件,如.pam_environment.
是的,我知道如何通过文档拼图并了解每个文件何时加载或未加载。我想知道的是,是否有人对如何决定将给定类型的自定义放入哪个文件中的每个文件都汇总了全面的指导方针。
我在 Windows 7 上使用 Git Bash,并希望设置 Bash 配置文件别名,alias gs='git status'以便让我的生活更轻松。我怎样才能做到这一点?
我发现这个问题 [博客]:.bashrc 和 .bash_profile 之间的区别非常有用,但在看到投票最多的答案(顺便说一句非常好)后,我还有其他问题。在投票最多的正确答案结束时,我看到以下声明:
请注意,您可能会在这里和那里看到将环境变量定义放在 ~/.bashrc 中或始终在终端中启动登录 shell 的建议。两者都是坏主意。
为什么这是一个坏主意(我不是想打架,我只是想了解)?
如果我想设置一个环境变量并将其添加到 PATH(例如 JAVA_HOME)中,它是放置导出条目的最佳位置?在~/.bash_profile或~/.bashrc 中?
如果问题 2 的答案是~/.bash_profile,那么我还有两个问题:
3.1. 你会在~/.bashrc下放什么?只有别名?
3.2. 在非登录 shell 中,我相信~/.bash_profile没有被“拾取”。如果 JAVA_HOME 条目的导出在 bash_profile 中,我是否能够执行javac和java命令?它会在 PATH 上找到它们吗?这就是为什么某些帖子和论坛建议将 JAVA_HOME 等设置为~/.bashrc 的原因吗?
提前致谢。
我知道这不是最佳实践,但在我的开发系统上,我以 root 身份登录。.bashrc 文件的等价物是什么,以便我可以为某些函数设置别名?
我找到了/etc/bash.bashrc&/etc/bash.bashrc.local但我不确定在哪里放我的命令。
运行 x86_64 SUSE。
谢谢,mjb。
为了启动我的开发环境,我写了一个小脚本。一部分是打开一个带有多个选项卡的 gnome 终端,其中应该自动执行一些命令。其中一些命令依赖于已经执行的 .bashrc。但是当使用
gnome-terminal --tab -e "command" --tab --tab
该命令在 .bashrc 执行之前执行。是否有可能使自动 gnome-terminal -e 表现得像手动使用的一样?(即使像“cd /foo/bar”这样的命令也不适用于 gnome-terminal -e)
.profile和之间有什么区别,什么.bash_profile时候配置哪个?
即如果我配置了.bash_profile,我还需要配置.profile吗?
我最近在 Linux Mint 10 LXDE 上安装了 virtualenv + virtualenvwrapper。为方便起见,我已将标准 WORKON_HOME 设置添加到我的 ~/.profile
export WORKON_HOME=$HOME/Envs
source /usr/local/bin/virtualenvwrapper.sh
Run Code Online (Sandbox Code Playgroud)
然后我注意到workon登录后不起作用,这意味着上面的命令没有运行。如果我source ~/.profile那么它的工作原理。我真的不确定是什么原因导致.profile无法运行?我已经检查过了,我没有.bash_profile或.bashrc。
我想让我在终端中输入(输入)的命令从所有输出中脱颖而出。
例如:
imac:~ buster$ chmod -R gw myfolder
imac:~ buster$ cd myfolder
imac:myfolder buster$ ls -l
total 0
drwxr-xr-x 9 root admin 306 Apr 20 2010 bin
drwxr-xr-x 7 root admin 238 Apr 20 2010 包括
drwxr-xr-x 73 root admin 2482 May 18 17:16 lib
drwxr-xr-x 6 root admin 204 Apr 20 2010 man
imac:myfolder buster$ echo Go Giants!
巨人加油!
大胆跳到脑海中,但我会接受一种颜色,甚至突出显示整条线......
我确定有办法做到这一点,但对我来说并不明显......
谢谢!
我PATH在 in 中添加了一个目录/etc/profile。这适用于我的用户帐户,但不适用于 root。将它添加到我的很容易,/root/.bashrc但我想了解有什么问题。这是一个大部分未修改的 Debian 6,所以我认为我的更改应该可以解决问题。
这是我的/etc/profile:
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/lib/distcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
if [ "$PS1" ]; then
if [ "$BASH" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else …Run Code Online (Sandbox Code Playgroud) 为了“正确”实现我喜欢的 shell 的标准配置bash,以便在多个平台上使用,在处理与他们选择的 shell 启动类型(登录或交互式)不一致的终端时,我遇到了一些困惑)。
从 bash 手册中,我确定了启动文件和它们来源的顺序/案例之间的区别(/etc/profile、~/.bash_profile、~/.bash_login、 和~/.profile登录 shell,以及~/.bashrc交互式非登录 shell)。该文档建议您将特定于 bash 的登录配置存储~/.bash_profile在~/.bashrc. 手册本身甚至建议添加if [ -f ~/.bashrc ]; then source ~/.bashrc; fi到~/.bash_profile文件中,以便登录 shell 继承您的交互式 shell 设置。
从我在手册和各种在线论坛/文档中读到的内容来看,将非 bash 特定的登录配置抽象为明智之举,~/.profile因为其他 shell 可以获取此文件。对于除了 bash 之外还可能使用 Bourne shell 的人来说,这可能是一个边缘情况(这在我的情况下不太可能),但这似乎是一个好习惯。
到目前为止,这一切看起来都非常简单和合乎逻辑,尤其是在各种 shell 启动类型之间的区别很明显的环境中:在命令行是主要界面的系统或终端上,登录 shell 是您的主要会话 shell ,交互式 shell 是在该会话中启动的后续 shell,而您的非交互式 shell 是运行脚本的 shell。
真正令人困惑的是,当您的 shell 从已通过系统身份验证的 GUI 环境中的终端启动时,登录 shell 的构成是什么? …