如何创建〜/ .bash_profile和〜/ .profile


25

因此,我的主文件夹中都.bash_profile没有.profile。如何创建它们?在那之后,每次打开终端我都应该怎么做?

Answers:


28

您可以使用该touch命令。

例如,

cd ~

转到主目录。

现在,我们将创建一个名为的文件.bash_profile(点表示它将被隐藏)。

然后在终端中使用nanovi。除非您知道是什么vi,否则请使用nano。要打开这些文件,您可以使用:

sudo nano .bash_profile

sudo确保您将能够保存这些文件。在这里,您可以添加aliasesnanovi将自动创建一个新文件(如果该文件在终端的当前目录中不存在)。

调整完毕后,按Ctrl+ OEnterCtrl+ X保存并退出。最后,使用

source ~/.bash_profile

重新加载终端,它将读取您在这些文件中输入的内容。

当然,如果需要,您也可以使用别名。:)

为了回答您的最后一个问题,每次您打开终端时,这些文件都会自动读取。但是,如果出现错误(例如,不要在别名之间放置空格),它将告诉您。

更多信息

正如George指出的那样,.bash_profile它将仅在登录Shell上运行。对于非登录外壳,您需要使用以下命令创建.bashrc文件:

    sudo nano .bashrc

链接

.bash_profile与.bashrc

.bashrc的重要性


5
为什么touch要先创建空文件?nano反正会自动执行此操作。
nohillside

5
另外,您可能不希望同时使用〜/ .profile和〜/ .bash_profile -如果bash看到.bash_profile,则不会对.profile感到困扰。最后,它将仅针对“登录” shell运行;nonlogin shell运行〜/ .bashrc代替。在此处此处查看先前的SO问题。
Gordon Davisson

@GordonDavisson可以~/.profile复制~/.bash_profile吗?如果两者兼而有之,那么您内部拥有什么是~/.profile无法完成的~/.bash_profile
Thi G.

2
@ThiG:我不会一个复制另一个;您可能会在其中添加一些内容,而忘记将其添加到其他内容中,并感到困惑。请参阅有关此SO问题的建议,以获取最佳实践。
戈登·戴维森

sudo确保您弄乱了用户权限。不要那样做
Max Ried

2

您可以从/ etc / skel /中复制这些文件,这些文件是为新用户创建的框架文件,这些新用户是通过命令(如基于Debian的发行版上的useradd)创建的:

cp -nr /etc/skel/. ~/

每次您登录时,这些文件都会由Shell自动加载。这些配置文件的加载方式在Shell手册页中进行了说明。如果您以特殊方式使用bash shell(例如,通过ssh,ansible等),则应使用“ bash -ilc“您要在由那些配置文件准备的ENV中执行的命令”。-i表示交互式外壳,.bashrc -l登录外壳通常需要这样做,这会导致加载.profile(或存在.bash_profile-请参见bash的手册页),然后再加载.bashrc


0

我更喜欢使用GUI文本编辑器,例如BBEdit或TextWrangler。这些文本编辑器可以处理诸如.profile和.bash_profile之类的不可见文件,并且它们具有GUI界面的优点,与作为控制台界面的nano不同。

文字牧马人

BBEdit


0

您还可以使用GUI文本编辑器(例如TextEdit):

touch ~/.bash_profile
open -e ~/.bash_profile

open -e是的快捷方式open -a TextEdit

您不必创建.profile或.bashrc。Terminal和iTerm 2打开新的Shell作为登录Shell,因此bash不会读取.bashrc。如果.bash_profile和.profile都存在,则bash作为交互式登录Shell调用时仅读取.bash_profile。.profile在作为交互式登录shell调用时由ksh读取,而在bsh作为交互式登录shell调用时由bash读取。

实际上,我已经告诉iTerm 2将新的shell作为非登录shell来打开,而我的.bash_profile仅包含像这样的行. ~/.bashrc。默认情况下,tmux和emacs中的shell模式将新的shell作为非登录shell打开。SSH到计算机时仍会读取.bash_profile。


让我看看,如果我得到你......你有两个~/.bash_profile~/.profile?而你也有~/.bashrc
Thi G.

我没有.profile,而.bash_profile仅包含. ~/.bashrc
Lri
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.