我對2個不同操作系統的shell腳本和進程表有一個普遍的疑問。跨不同Linux發行版的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
這是假設我啓動另一個終端,不打e在劇本上。
但是,如果我做一個Oracle Linux系統上同樣的事情,我沒有得到任何比賽,直到我加入認領到腳本
#!/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不會。 – Joe
oracle上的默認shell是什麼,它是否支持字符類例如'[stuff]'?)。 Bash的確如此。如果oracle上的默認shell沒有,那麼你有你的答案。 –