我有一个关于2个不同操作系统的shell脚本和进程表的一般性问题。
在SuSE Linux系统上,我运行一个名为joe.sh的脚本。这是一个简单的脚本,它执行以下操作
echo "Hello Joe "
read x
如果我执行了ps -ef | grep [j]oe.sh -
,它会找到一个看起来像这样的结果
joe 15532 24267 0 09:40 pts/2 00:00:00 /bin/sh ./joe.sh
假设我启动了另一个终端并且没有点击输入脚本。
但是,如果我在oracle linux系统上做同样的事情,我得不到匹配UNTIL我在脚本中添加了一个shebang
#!/bin/bash
echo "Hello Joe"
read x
SuSE环境中是否存在默认设置?我想在Oracle Linux系统上复制该行为。
答案 0 :(得分:2)
脚本应始终有一个shebang线,除非它们是source
d。 default shell in SuSE是Bash。将#!/bin/bash
添加到顶部。
答案 1 :(得分:0)
我认为你要找的是:interpreter-script
无论如何,剧本应该总是有一个shebang线。 (我是第二个约翰)
答案 2 :(得分:0)
正如您在状态行中所看到的,正在调用的默认shell是sh
。
joe 15532 24267 0 09:40 pts / 2 00:00:00 / bin / sh ./joe.sh
所以它正在sh
执行。
如上所述,默认情况下,SuSE中的shell应为Bash。但是,可以为每个用户配置不同的配置。任何用户的默认shell(通常在基于UNIX的系统中)都在/etc/passwd
文件中定义。
该文件的每一行都是用户,字段由:
符号分隔。第7个字段是默认用户shell(用户登录时要执行的shell)。
更详细的解释可在以下网址找到:http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/