当我登录到每个 Putty 的 Linux 服务器时,我想执行bash
(因为默认 shell 是另一个),然后添加一个别名。
我尝试了几种组合,将exec bash
放入.profile
并将alias foo='echo foo'
添加到.bash_profile
中。但是我没有找到正确的组合。未设置别名,或未执行 bash 。
因此,问题是,在以下文件中的哪一个:
.profile
.bashrc
.bash_profile
我必须放置以下命令吗:
exec bash
alias foo='echo foo'
运行bash
shell 并在每次登录服务器时访问我的别名?
编辑:我们使用所有相同的用户登录。但是我想执行 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。 之后,由于bash
shell将获取自己的配置文件,因此将获取.bash_profile
。
但是:非常感谢您的支持!
要在启动时设置别名,请更改.bash_profile 将别名添加到 bash 配置文件:
$ cd
$ sudo nano .bash_profile
$ alias ALIAS_NAME='COMMAND'
更新 bash 配置文件
$ source ~/.bash_profile