我有一个默认外壳为的主板sh
。在“ / etc / profile”的末尾有:
exec /bin/ash
这会将shell更改为ash
。
如果要执行在其中定义了一些别名的文件怎么ash
办?
我尝试使用:
exec /bin/ash -f /root/aliases.sh
但是,当我使用ssh
它登录到板时,退出说连接已关闭。
还有其他方法吗?
当您运行时,exec /bin/ash -f /root/aliases.sh
ash
它是非交互式运行的,并且在执行“ /root/aliases.sh”后立即退出;这就是SSH会话结束的原因。
因此,解决方案是交互式运行外壳程序。来自man 1 ash
:
如果环境变量ENV是在外壳程序的入口处设置的,或者是在登录外壳程序的.profile中设置的,则该外壳程序接下来将从ENV中命名的文件中读取命令。因此,用户应将仅在登录时执行的命令放置在.profile文件中,并将在ENV文件中为每个外壳执行的命令。
因此,只需ENV
在“〜/ .profile”中进行设置:
export ENV=/root/aliases.sh
并以交互方式运行shell:
exec /bin/ash
但是请注意:
exec /bin/ash
在“〜/ .profile”末尾运行将用实例替换任何来源“〜/ .profile”的外壳程序(即任何登录外壳程序)ash
;ash
用户登录shell的正确方法是更改该用户的登录shell,这可以使用完成chsh
。因此,我真的建议您exec /bin/ash
从“〜/ .profile”中删除并改为使用该用户更改登录shell chsh
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句