2016-04-22 15 views
0

2つの異なるオペレーティングシステムにまたがるシェルスクリプトとプロセステーブルに関する一般的な質問があります。異なるLinuxディストリビューションでのシェルスクリプトの動作

SuSE Linuxシステムでは、joe.shというスクリプトを実行します。それは私がps -ef | grep [j]oe.sh -を行う場合


echo "Hello Joe "  
read x 

次ん、それはこの


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システムで再現したいと思います。

+0

あなたが一致を取得していないとはどういう意味ですか?スクリプトはすぐに実行され終了しますか?それは正しく実行されませんか?何らかの理由で、あなたは 'sh'で実行しています(' ps'出力行に見られるように)。とにかくいつもいつもハッシュバーン( '#!')に入れたいと思っています。 –

+0

ps -ef | grep [j] oe.shは(oracle上で)結果を返しません。スクリプトは、何かを入力するまでプロセステーブルにハングアップします。私はそのように設定したので、別のxtermウィンドウを開いて別の方法でプロセスを検索することができます。なぜなら、suseがデフォルトで/ bin/shを常に持っているのを誰かが知っていれば、私はちょっと不思議であったからです。 – Joe

+0

oracleのデフォルトのシェルは何ですか?例えば ​​'[stuff]'?)。バッシュはそうです。 oracleのデフォルトのシェルがそうでない場合は、あなたの答えがあります。 –

答えて

0

私は、あなたが探していることだと思う:スクリプトは常にシェバングラインを持っている必要があり、​​

とにかく。 (I second John)

2

sourceを意図していない限り、スクリプトは常にシバン線を持つ必要があります。 default shell in SuSEはBashです。上部に#!/bin/bashを追加します。

0

ステータス行でわかるように、呼び出されるデフォルトのシェルはshです。

ジョー15532 24267 0 9:40のPTS/2夜12時○○分00秒/binに/ ./joe.sh SH

だからshで実行されています。

デフォルトでは、SuSEのシェルはBashでなければなりません。ただし、これはすべてのユーザーごとに異なる構成にすることができます。任意のユーザー(通常はUNIXベースのシステム)のデフォルトのシェルは、/etc/passwdファイルで定義されています。

このファイルの各行はユーザーであり、フィールドは:個の記号で区切られています。 7番目のフィールドは、デフォルトのユーザーシェル(ユーザーがログインするときに実行するシェル)です。

より詳細な説明はで見つけることができます:http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/

関連する問題