如何在.bash_profile中检测我使用的服务器并相应地应用设置

时间:2014-08-10 16:41:30

标签: linux bash

我有一些运行Fedora 20的虚拟机和一个NAS盒子,所有VM上都安装了HOME目录。它非常有用,因为用户必须维护一份git设置,VNC设置SSH密钥等。问题是,无论使用哪个VM,它们总是使用相同的.bash_profile,它始终引用相同的.bashrc。我说这是一个问题,因为我想在每个用户的基础上应用一些设置,但仅针对一个特定的VM。具体而言,我想在一个特定的独立服务器上为少数用户更改umask。

所以我认为必须有一种方法可以通过.bash_profile有条件地加载一些设置,具体取决于服务器的IP /主机名。

我想,就像.bash_profile引用.bashrc我可以使用此设置引用另一个文件,该文件仅存在于它将影响的服务器上。不是其他服务器此引用无效。这不是一个优雅的解决方案,它会抛出错误。

我试过谷歌搜索这个结果通常会指向stackoverflow,其中有人有类似的问题,但这次我找不到任何东西。

有人知道如何解决这个问题吗?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您可以将您的主机特定命令放在.bashrc_myhostname中,如果它存在则将其来源:

[ -f "$HOME/.bashrc_$HOSTNAME" ] && . "$HOME/.bashrc_$HOSTNAME"

或者您可以使用ifcase语句为某些主机硬编码命令:

if [ "$HOSTNAME" = "mytestserver" ]
then
  ulimit -c unlimited
fi

答案 1 :(得分:3)

这是我测试过的,也是我想做的。 我的大多数用户在更改别名时都会查看.bashrc,以确保我不会意外地更改它.bash_profile

TargetVM="vm1.example.lan"

if [ "$TargetVM" = "$HOSTNAME" ]; then
        umask 077
else
        umask 027
fi
相关问题