【发布时间】:2017-03-23 22:25:11
【问题描述】:
我有一个关于跨 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 系统上做同样的事情,我会得到不匹配的结果,直到我在脚本中添加一个 shebang
#!/bin/bash
echo "Hello Joe"
read x
SuSE 的环境中是否有一些可以设置的默认值?我想在 Oracle Linux 系统上复制这种行为。
【问题讨论】:
-
你没有匹配是什么意思?脚本是否立即运行并终止?它甚至没有正确执行吗?出于某种原因,您正在使用
sh执行它(可以在ps输出行中看到)。无论如何,您通常都希望始终放入 hashbang (#!)。 -
ps -ef | grep [j]oe.sh 不返回任何结果(在 oracle 上)。该脚本挂在进程表中,直到我输入一些内容。我是这样设置的,这样我就可以打开另一个 xterm 窗口并以不同的方式搜索进程。我知道总是包含 shebang 是一种很好的做法,我只是好奇是否有人知道为什么 suse 总是默认有 /bin/sh 而 oracle 不会
-
oracle 上的默认 shell 是什么,它是否支持字符类(例如
[stuff]?)。巴什会。如果 oracle 上的默认 shell 没有,那么您就有答案了。 -
我在两个系统上都发出了命令 echo $SHELL,它们都返回 /bin/bash