2016-10-27 13 views
-1

私はbash_profileに関数を書いています。この関数は、最初にbash(例えば、新しいxterminalで)でロードするときに無音にする必要があります。bash_profileと関数を区別する方法は、起動時に実行されているか、後でユーザーによって呼び出されますか?

bashが起動したときに実行する関数が必要で、ユーザーの要求に応じて実行する必要があります。

これを区別する方法はありますか?

私は"$PS1""$-"を試しましたが、どちらも対話型です。

申し訳ありませんが私の貧しい人々のために、私はキャッシュのためのユーザーごとのmemdiskを作成する機能を意味します。それは対話的なログインを一度作成する必要がありますので、私は~/.profileに入れます。また、ユーザーがスイッチを切ったり、オンにしたりする必要があります。そのため、後でユーザーがコールしたときに機能が冗長である必要があります。

ログイン時には、無音にする必要があります。ユーザーが切り替えようとすると、冗長にする必要があります。

要するに、私はsthが必要です。 swap onのように、ユーザーがログインすると無音になりますが、後でユーザーが入力すると冗長になります。引数を渡すためにしているために、または環境を確認するために

二つの方法:他の人から聞いた

+0

あなたは '〜/ .bash_profile'から関数を呼び出しているのですか?その定義がありますか? –

+0

下記の答えが間違っていれば完全に理解できません.... "私はbash_profileの関数を書いています。開始時にbashで最初に読み込んだときには消す必要があります" –

+0

'〜/。 bash_profile'を実行し、後でユーザーの要求に応じて実行します。両方の状況で関数を実行する必要があります。 – Galaxy

答えて

-1


私はちょうど$$etimeを使用する方法を見つけます。

setit() { 
    BashRun=$(ps -p "$$" -o etime=|tr '-' ':'|awk -F: '{total=0;m=1;} {for (i=0;i<NF;i++) {total+=$(NF-i)*m;m*=i>=2?24:60}} {print total}') 
    ... ... 
    if [ $? -eq 0 ]; then 
     if [ $BashRun -gt 1 ]; then 
      echo "It has already been set !" 
     fi 
    fi 
} 
+0

なぜ単に環境変数を設定するだけでは不十分ですか? –

+0

私はこの点を知らなかったので。 – Galaxy