我的主目录中没有bashrc文件


14

这是我在演讲中记录下来的内容:

  • .bashrc在您的主目录中查找文件
  • vi .bashrc
  • 将应用程序文件夹放在某处时,请确保其地址在path变量中。

问题是.bashrc我的主目录中没有文件。.bash_history我家只有一个文件。

如果我转到根目录,则那里有一个etc/bash.bashrc文件,但我认为它会为所有用户(而不仅仅是我)进行更改。我想为自己添加此路径。它不应该影响其他人。$PATH该bashrc文件中也没有变量,因此我更加困惑。

Answers:


20

别忘了它是您的主目录中的一个隐藏文件(您不会第一个这样做ls -l并且会认为它不存在)。

请遵循...

ls -la ~/ | more

.bashrc第一页上应该有一个。如果不只是用

vi ~/.bashrc

并简单地将以下行写入其中。

PATH=$PATH:~/bin

大多数发行版都在其中保留标准.bashrc文件,/etc/skel/您可以将其复制到主目录。

$cp /etc/skel/.bashrc ~

好吧,我现在明白了。在其他计算机上,我可以键入lego,然后软件会启动。在我的系统上,乐高文件夹位于我的~/data/user1/bin文件夹中。我已将此路径添加到.bashrc文件。现在我该怎么做,以便当我键入乐高玩具时,它应该启动软件?我必须设置别名吗?如果是,怎么办?alias lego='<What do i put here???>'

@detraveller是否已~/data/user1/bin.bashrc文件中添加到PATH环境变量?(添加以下行:export PATH=$PATH:~/data/user1/bin)-如果是这样,您应该能够只lego在终端中键入内容,程序便会启动。
AcId

我只加了PATH=$PATH:~/data/user1/bin。您没有提到出口,所以我没有把它放在那里。我明天去Uni时会再试一次。
detraveller

但是我想知道我该如何告诉bash lego启动软件的字眼?
detraveller

11

大多数发行版中都包含一个标准.bashrc文件,/etc/skel/您只需将其复制到主目录即可。否则,您可以.bashrc在主目录中制作一个新的空文件。


4

为交互式Shell创建您自己的启动文件

关于Bash启动文件

从“邀请”部分man 1 bash说:

启动不是登录外壳程序的交互式外壳程序时,如果存在这些文件,则bash从/etc/bash.bashrc和〜/ .bashrc中读取并执行命令。

请注意,这些启动文件是可选的;Bash不需要它们。Bash还区分了登录外壳程序和交互式外壳程序。因此,定义了一个交互式外壳:

交互式外壳程序是一个不带非选项参数且不带-c选项(其标准输入和错误都连接到终端(由isatty(3)确定))启动的外壳程序,或一个以-i选项启动的外壳程序。

许多发行版都从另一种发行版中获取一种启动文件,而有些则没有,因此很难规范地解决此问题。您需要检查所有启动文件,以了解如何以及何时~/.bashrc在系统上调用您的文件

创建每个用户的交互式Shell启动文件

如果您只是缺少用户特定的~/.bashrc文件,只需创建一个即可。Bash将为非登录外壳程序(例如,不带--login标志的外壳程序启动)调用此方法,或者每当您通过带-i标志调用该外壳程序使外壳程序具有交互性时,就会调用此方法。


0

如果您没有.bashrc,则可以简单地创建一个,然后向其添加所需的行,例如:

PATH=$PATH:~/bin

将您的用户bin目录添加到路径的末尾。

但是,如果还有其他启动文件,则应小心。关于使用哪些文件的规则相当复杂,但是在bash手册页中有详细说明。man bash在命令行中输入并查找INVOCATION


0

简短的答案:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

详细一:
我对字面意义进行更详细的解释。

  1. “在您的主目录中找到文件.bashrc”
    由于该命令存在find,所以诡t的编辑器可能会建议您使用它:

    find ~ -maxdepth 1 -name '.bashrc'

    在主目录中搜索~,仅下降一级(无subdir -maxdepth 1)。对于所有选项,请写man find
    下方的线将完成最小的工作

    ls ~/.bashrc   

    注意:如果~/.bashrc不存在,则可以使用简单的创建echo >> ~/.bashrc

    >>如果不存在,将创建该文件。如果~/.bashrc存在替代项,则它将仅追加无害的empty输出echo,避免无意中删除此类关键文件,而如果没有备份,这些关键文件将很难恢复。

    (以下原因是因为我很少必须遵守昵称的含义,如果您有疑问,请不要执行)。

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
    
  2. “执行vi .bashrc
    现在您可以执行操作vi ~/.bashrc,这里的陷阱是您需要按:q退出!

  3. 应用程序文件夹,然后$PATH
    在创建应用程序文件夹时,例如~/MyNewCoolProgramFolder,下面的行将仅检查它是否位于$PATH

    echo $PATH | grep ~/MyNewCoolProgramFolder

    如果已经存在,则不需要添加。如果需要,你可以添加到$PATH

    PATH=$PATH:~/MyNewCoolProgramFolder

    并将该行添加~/.bashrc到永久行。

  4. “ 4?!?如果只有3分,怎么4?”-解决方法。
    后者有一些解决方法。假设名为的可执行文件CoolDetraveller仅存在于新的应用程序文件夹中:

    (a)您可以尝试执行它。如果不在,它将无法启动$PATH

    CoolDetraveller:找不到命令

    (b)您可以尝试自动完成。开始书写CoolDetravelle,然后按Tab。如果在中$PATH,它将自动完成(始终启用自动完成)。

    (c)which如果您编写命令,可以要求使用bash shell 命令CoolDetraveller

        which CoolDetraveller

    注意: 如果您的应用程序路径有一个或多个空格,which可能无法找到CoolDetraveller,虽然(我在这里再一次兑现我的昵称)的自动完成CoolDetraveller作为的一个有效参数,which命令将工作!

    恶心:您不能问,whereis CoolDetraveller因为whereis

    具有硬编码的路径,因此可能无法始终找到所需的内容

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.