登录时执行 bash 并添加别名



当我登录到每个 Putty 的 Linux 服务器时,我想执行bash(因为默认 shell 是另一个),然后添加一个别名。

我尝试了几种组合,将exec bash放入.profile并将alias foo='echo foo'添加到.bash_profile中。但是我没有找到正确的组合。未设置别名,或未执行 bash 。

因此,问题是,在以下文件中的哪一个:

.profile
.bashrc
.bash_profile

我必须放置以下命令吗:

exec bash
alias foo='echo foo'

运行bashshell 并在每次登录服务器时访问我的别名?

编辑:我们使用所有相同的用户登录。但是我想执行 bash 并仅为我的远程机器添加别名。我已经对此有一个合适的if声明。我只需要知道,把这些命令放在哪里!

编辑2

到目前为止,我.profile

if [ $(who -m | awk '{print $NF}' | grep "myHostName" | wc -l) -eq 1 ]
then
exec bash
alias foo='echo foo'
fi

这将仅为我的用户执行 bash 。但是别名将被忽略,因为我正在启动一个新的 shell,并且别名可能会在旧 shell 中设置......

要出去猜你想这样做,因为你的默认外壳不是 bash。不要。只需更改默认外壳

> chsh -s /bin/bash

然后把

alias foo='echo foo'

~/.bashrc~/.bash_profile

如果多个用户使用同一帐户,您可以尝试执行以下操作。登录后,运行

> who -a | grep $(ps -p $PPID -o ppid=) | awk '{print $NF}'

这可能取决于系统,但是在我尝试过的几个上,这将获得您登录的位置。获得该输出后,请执行以下操作

if [[ $(who -a | grep $(ps -p $PPID -o ppid=) | awk '{print $NF}') == output ]]; then 
alias foo='echo foo'
done

如果你从多台计算机上进行ssh-ing,那么我认为没有任何方法可以做你想做的事。最简单的方法是在主目录中创建自己的文件,然后在每次登录时手动获取它。

例如

> touch myfile.txt
> echo "alias foo='echo foo'" >> myfile.txt
> source myfile.txt
> foo
foo

因此,您只需在每次登录时运行source myfile.txt,或者默认情况下只需使用腻子源即可。

好的,最后我在BroSlow的大力帮助下自己想通了。

我写了以下内容给我.profile

if [ $(who -m | awk '{print $NF}' | grep "myHostName" | wc -l) -eq 1 ]
then
exec bash
fi

另一部分到.bash_profile

if [ $(who -m | awk '{print $NF}' | grep "myHostName" | wc -l) -eq 1 ]
then
alias foo='echo foo'
fi

这解决了我的问题!

登录时,将自动获取.profile并执行 bash。 之后,由于bashshell将获取自己的配置文件,因此将获取.bash_profile

但是:非常感谢您的支持!

要在启动时设置别名,请更改.bash_profile 将别名添加到 bash 配置文件:

$ cd
$ sudo nano .bash_profile
$ alias ALIAS_NAME='COMMAND'

更新 bash 配置文件

$ source ~/.bash_profile

相关内容

  • 没有找到相关文章

最新更新