假设有人在我的笔记本电脑后面坐了一秒钟并运行:
alias cd='Ha Ha, Got You :))'
或者我们运行一个未知的软件/脚本/等,它会在~/.bashrc
. 喜欢:
alias sort='rm -rf ~'
这些只是aliases
; 如您所知,这些事情也可以使用函数来完成:
cd(){ echo "Removing everything you've got :D"; }
这些情况只是虚构的例子,考虑任何类似的情况。
一个小脚本呢?
sudo -n ls &>/dev/null
if [ "$?" -eq "0" ]
then
sudo "Some dangerous command"
else
cd $1
fi
然后alias cd="/home/user/.config/gtk/.cd.sh"
。
对于在 bash 中运行的命令,我们可以简单地关闭并重新打开终端,但是在启动文件中设置的命令呢,我们无法在每次运行终端时检查文件或别名/函数列表.
介绍
bash 配置文件
Bash 有一堆配置(也称为启动)文件,它使用这些文件为每个用户设置特定的环境。
其中一些文件位于
/etc
,我知道其中一个是/etc/profile
,它是一个全局配置文件,其设置将应用于所有会话,另一个是/etc/bash.bashrc
; 我们不需要处理这些文件,因为它们的位置已经受到保护,只有 root 有权编辑它们。一个对我们有很大帮助的非常重要的目录是
/etc/skel
:每当您使用主目录创建新用户时,此目录中的文件将用作新用户主目录的骨架。我们还可以
dpkg
用来查找这些文件:我们可以看到这些都是由
bash
.事情在 bash 中是如何工作的
可以在这些文件中的任何一个中设置别名或函数,所以让我们看看这些文件将如何被
bash
.从
bash
手册页:所以顺序是:
~/.bash_profile > ~/.bash_login > ~/.profile
每次我们从登录 shell 退出时都会运行这个,我看不出这个对我们的情况有什么影响。
所以最重要的字段是
~/.bashrc
,因为我们运行的几乎 90% 的 bash shell 都处于交互式和无登录模式。如果我们看一下这个文件,我们可以看到它会寻找另一个名为 的文件~/.bash_aliases
,如果它能够找到它,那么它也会找到source
那个文件。开始处理这些文件
首先我们应该移动
~/.profile
到,~/.bash_profile
否则如果我们保护文件并不重要~/.profile
,有人可以创建一个~/.bash_profile
,它会覆盖我们的配置,所以:之后,如果您不使用
~/.bash_aliases
文件然后创建它,再次像上面一样,有人可以简单地创建这个文件,并且有机会他(她)可以在其中更改或别名。最后用于
chattr
保护这些文件不被编辑和删除。从
chattr
手册页:我们完成了,不要忘记,无论何时要编辑这些文件,都应首先删除该
-i
属性。在不关闭/重新打开终端的情况下重置所有内容
另一种解决方法是,创建一个文件:
把你的别名放在那里:
确保没有人可以写入该文件:
现在每次你想重新加载一切运行:
回滚
如果你改变了主意:
如果你做了一些愚蠢的事情(没有锁定屏幕就走开,盲目地从不受信任的来源运行未经检查的脚本等),你会得到糟糕的结果。
试图变得足够聪明以从不良做法中恢复以前从未奏效。