可能重复: What's the difference between .bashrc, .bash_profile, and .environment?
看起来如果我使用
alias ls='ls -F'
在Mac上的.bashrc中,新创建的外壳将不具有该别名。我需要再次键入bash
,该别名将生效。
如果我在托管公司上登录Linux,.bashrc
文件有一个注释行,上面写着:
非登录shell的
.bash_profile
文件中有一条注释:
登录shell的
那么别名应该写在哪里呢?为什么我们要将登录shell和非登录shell分开?
一些网页上说使用.bash_aliases
,但它似乎不能在Mac上运行。
发布于 2009-05-24 02:42:48
将登录和非登录shell分开的原因是,每次启动新的.bashrc
副本时都会重新加载该shell文件。只有当您登录或使用适当的标志告诉.profile
充当登录shell时,才会加载Bash文件。
就个人而言,
PATH
设置放入.profile
文件中(因为我有时会使用其他shell);.bashrc
文件中;#!/bin/bash ## CRM .bash_profile时间戳:"2008-12-07 19:42“## echo”正在加载${HOME}/.bash_profile“来源~/.profile #获取我的路径设置源~/.bashrc #获取我的Bash别名
在我的.bash_profile
文件中。
哦,您需要再次输入Bash来获得新别名的原因是,bash
在启动时加载您的.bashrc
文件,但除非您告诉它,否则它不会重新加载它。您可以通过输入以下命令重新加载.bashrc
文件(而不需要第二个shell
source ~/.bashrc
这将加载.bashrc
文件,就像您直接向Bash键入命令一样。
发布于 2009-05-24 06:22:38
除了man bash
之外,还可以查看http://mywiki.wooledge.org/DotFiles获取有关该主题的优秀资源。
摘要:
~/.bash_profile
或~/.profile
的时候。由于从登录shell运行的所有内容都继承了登录shell的环境,因此应该将所有环境变量放入其中。像LESS
,PATH
,MANPATH
,LC_*
,...有关示例,请参阅:My .profile
~/.bashrc
,而不执行/.profile
或~/.bash_profile
,因此在其中定义了仅适用于bash的所有内容。这是函数、别名、UNIX bash专用变量,比如HISTSIZE (这不是环境变量,不要导出它!),带有set
和shopt
的shell选项,等等。有关示例,请参阅:My .bashrc
~/.bashrc
,而只执行~/.profile
或~/.bash_profile
,因此您应该手动从后者获取它们。你也会看到我在我的~/.profile
中这样做:source ~/.bashrc
.发布于 2009-05-24 02:46:23
从bash手册页:
当作为交互式登录shell或带有
--login
选项的非交互式shell调用bash时,它首先从文件/etc/profile
读取并执行命令(如果该文件存在)。读取该文件后,它将按该顺序查找~/.bash_profile
、~/.bash_login
和~/.profile
,并从第一个存在且可读的文件中读取和执行命令。当外壳程序启动以禁止此行为时,可以使用--noprofile
选项。
当登录shell退出时,bash从文件~/.bash_logout
读取并执行命令(如果存在)。
当启动非登录shell的交互式shell时,如果~/.bashrc
文件存在,bash将读取并执行该文件中的命令。这可以通过使用--norc
选项来禁止。bash file选项将强制--rcfile
读取和执行来自文件而不是~/.bashrc
的命令。
因此,如果您希望获得登录shells和交互式非登录shells的相同行为,则应该将所有命令放在.bashrc
或.bash_profile
中,然后让另一个文件source第一个命令。
https://stackoverflow.com/questions/902946
复制相似问题