【发布时间】:2015-03-05 11:58:40
【问题描述】:
我有一个 C++ 应用程序,它需要使用系统调用来生成特定于 shell 的命令。有没有办法检测用户正在运行哪个 shell? (Csh/Bash/等)。
谢谢
详细说明
我正在尝试使用一些通过system 分叉的代码rsh 调用具有使用setenv 的命令序列,这在bash 中不起作用。我想检测系统是csh还是bash并相应地重写调用。
【问题讨论】:
-
也许使用popen运行
echo $SHELL?或echo $0? -
哪个用户?脚本之一或可能许多已登录的脚本之一?
-
你签到
/etc/passwd,例如:cat /etc/passwd | grep user | cut -d: -f7 -
@InnocentBystander 然后呢?当前的外壳在那里吗?没有
-
不要
system(不安全的)rsh命令,而是fork然后execve它