2016-10-27 8 views
0

つまり、~/.profileでは、ユーザがログインしたときにdoitWelcomeと表示されますが、ユーザがdoitを実行したときに他の単語が表示されます。bash_profile関数を作成する方法は、bash_profile内で異なる動作をしたり、後でユーザーが呼び出すのですか?

doit() { 
    if some_test_here; then 
     echo "Running within ~/.profile. Welcome." 
    else 
     echo "Called by user." 
    fi 
} 

doit 

私は~/.profileは、Linux上で~/.bash_profileのためのMac上で優れていると思います。ですので、例として~/.profileを使用します。

+0

'によって設定された変数のための環境を確認してください。 '.bash_profile'も' .bash_login'も存在しない場合、 'bash'は' .profile'を使います。 – chepner

答えて

0

引数を渡すか、環境を確認する2つの方法です。


.profileの呼び出しでのみ使用される引数を使用します。

doit() { 
    if [ "${1:-onlogin}" -eq onlogin ]; then 
     echo "Running from .profile" 
    else 
     echo "Called by user" 
    fi 
} 

doit onlogin # from .profile 
doit   # ordinary call 

.profile` *は任意の* POSIXシェルで使用できるコマンドのために使用すべきである.profileを

doit() { 
    if [ "${_onlogin}" ]; then 
    echo "Running from .profile" 
    else 
    echo "Called by user" 
    fi 
} 

onlogin=1 doit # from .profile; value can be any non-empty string 
doit    # ordinary call 
+0

あなたが言及した基準が満たされていない場合、この回答は失敗する可能性があるので、質問に対するあなたのコメントもまた回答の一部であるべきだと思います。 – alok

+0

どのようにそうですか? 'doit'はPOSIXに準拠しています。 – chepner

+0

私は混乱しています、あなたは 'bashは.bash_profileも.bash_loginも存在しなければ.profileを使用します。 ' - だから.profileがソースにならない可能性がありますか? – alok

関連する問題