nop*_*ole 119 bash shell environment
好像我用了
alias ls='ls -F'
Run Code Online (Sandbox Code Playgroud)
在Mac OS X上的.bashrc中,新创建的shell将没有该别名.我需要bash再次键入,该别名将生效.
如果我在托管公司登录Linux,该.bashrc文件有一条注释行,上面写着:
对于非登录shell
并且该.bash_profile文件有一条评论说
用于登录shell
那么别名应该写在哪里?为什么我们将登录shell和非登录shell分开?
一些网页说使用.bash_aliases,但似乎在Mac OS X上不起作用.
Cha*_*tin 161
您将登录和非登录 shell 分开的原因.bashrc是每次启动Bash的新副本时都会重新加载该文件..profile只有在您登录或使用适当的标志告诉Bash充当登录shell时才会加载该文件.
亲身,
PATH设置放到一个.profile文件中(因为我有时会使用其他shell);.bashrc文件中;我把它
#!/bin/bash
#
# CRM .bash_profile Time-stamp: "2008-12-07 19:42"
#
# echo "Loading ${HOME}/.bash_profile"
source ~/.profile # get my PATH setup
source ~/.bashrc # get my Bash aliases
Run Code Online (Sandbox Code Playgroud)
在我的.bash_profile档案中.
哦,你需要bash再次输入以获得新别名的原因是Bash .bashrc在启动时加载你的文件,但除非你告诉它,否则它不会重新加载它.您可以.bashrc通过键入来重新加载文件(而不需要第二个shell)
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
加载.bashrc文件就像您直接向Bash键入命令一样.
lhu*_*ath 118
查看 http://mywiki.wooledge.org/DotFiles提供了关于该主题的优秀资源man bash.
摘要:
~/.bash_profile或~/.profile读取和执行.由于您从登录shell运行的所有内容都继承了登录shell的环境,因此您应该将所有环境变量放在那里.像LESS,PATH,MANPATH,LC_*,...举一个例子,请参阅:我的.profile~/.bashrc,而不是/.profile或~/.bash_profile由于这个原因,因此在那里定义仅适用于bash的所有内容.这是函数,别名,仅限bash的变量,如HISTSIZE(这不是环境变量,不导出它!),shell选项set和shopt等等.例如,请参阅:我的.bashrc~/.bashrc,但只~/.profile或~/.bash_profile,所以你应该从后者手动源的那一个.你会看到我也是这样做的~/.profile:source ~/.bashrc.Ada*_*eld 12
从bash手册页:
当bash作为交互式登录shell或具有该
--login选项的非交互式shell调用时 ,它首先从该文件读取并执行命令/etc/profile(如果该文件存在).读取文件后,它会寻找~/.bash_profile,~/.bash_login和~/.profile,按照这个顺序读取并执行从存在并且可读的第一个命令.--noprofile启动shell以禁止此行为时可以使用该 选项.当登录shell退出时,bash从文件中读取并执行命令
~/.bash_logout(如果存在).当启动不是登录shell的交互式shell时
~/.bashrc,如果该文件存在,bash将从中读取并执行命令.使用该--norc选项可以禁止这一点.该--rcfile文件选项将强制bash读取和文件,而不是执行命令~/.bashrc.
因此,如果要为登录shell和交互式非登录shell获取相同的行为,则应将所有命令放在.bashrc或中.bash_profile,然后将另一个文件源放在第一个.
| 归档时间: |
|
| 查看次数: |
97088 次 |
| 最近记录: |