![为所有用户在 shell 登录时运行脚本](https://linux22.com/image/865045/%E4%B8%BA%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%E5%9C%A8%20shell%20%E7%99%BB%E5%BD%95%E6%97%B6%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
我有一个名为“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_^ __'
如果我将 ./als 附加到我的~/.profile
文件,它会起作用,但这只对我执行。同样,我希望这对所有在 shell 登录的用户都运行
答案1
你可以将脚本保存在 中/etc/profile.d/als.sh
。根据 Ubuntu环境变量手动的:
每当进入 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_^ __'
这应该适用于所有用户。