为所有用户在 shell 登录时运行脚本

use*_*537 5 server ssh command-line bash 14.04

我有一个名为“als”的脚本,用于解析用户.bashrc文件中的别名,我想为通过 SSH 登录的任何用户运行该文件。

这应该显示类似于每日消息 (MOTD) 横幅。不过,MOTD 横幅是静态数据。

这是代码。

#!/bin/bash
echo
echo Your aliases:
echo \(from ~/.bashrc\)
echo
cat .bashrc | egrep 'alias.+\=' | tr -s [:space:] | sed 's_^ alias_alias_' | sed 's_alias__' | sort | sed 's_=_\t\t_' | sed 's_^ __'
Run Code Online (Sandbox Code Playgroud)

如果我将 ./als 附加到我的~/.profile文件中,它会起作用,但这仅对我执行。同样,我希望在 shell 登录时为所有用户运行

Let*_*ety 7

您可以将脚本保存在/etc/profile.d/als.sh. 根据 Ubuntu EnvironmentVariables手册:

每当进入 bash 登录 shell 时(例如从控制台或通过 ssh 登录时),就会执行 /etc/profile.d 目录中带有 .sh 扩展名的文件,并且在桌面会话加载时由 DisplayManager 执行。

您还应该使用绝对路径修改相对路径:

 cat /home/$USER/.bashrc | egrep 'alias.+\=' | tr -s [:space:] | sed 's_^ alias_alias_' | sed 's_alias__' | sort | sed 's_=_\t\t_' | sed 's_^ __'  
Run Code Online (Sandbox Code Playgroud)

这应该适用于所有用户。