ログアウトして再度ログインした後は、ターミナルから機能を.profileに追加できません。

ログアウトして再度ログインした後は、ターミナルから機能を.profileに追加できません。

だから私の.profile外観は次のとおりです。

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

if [ -f "$HOME/.local/share/profile" ]; then
    . "$HOME/.local/share/profile"
fi


# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export VISUAL=nano
export EDITOR="$VISUAL"
stty -ixon

function test-func {
        echo test-func
}

alias test-alias='echo test-alias'

Gnome(Fedora 35)にログインして端末エミュレータを開くと、機能を実行できませんtest-func

$ test-func
bash: test-func: command not found

ただし、関数を.bashrcファイルに入れてログアウトしてから再度ログインすると、test-func関数を実行できます。

.profile追加された機能が環境で利用できない理由はありますか?

編集:それで、グラフィカルではなくログイン(Ctrl + Alt + F3トリックを使用)を使用してログインすると、このtest-func機能を使用できることがわかりました。 Gnomeが.profile非ログインシェルで機能を提供しない理由はありますか?

func-name () { ... }編集2:関数に(代わりに)POSIX準拠の構文を使用してもfunction func-name { ... }効果がないことも確認しました。

答え1

これはおそらくコメントに近いですが、評判が十分ではないので、私が得たものは次のとおりです。

  • この問題は特にGnomeとは関係ありません。私はKDEを使用していますが、この問題も発生しました。
  • に関数を入れると~/.bash_profile使えるようになります。同じことを確認できますか?このようなことが起こった場合は、別の手がかりを得ることができます~/.profile~/.bash_profile

実際には、ログインシェルの面で異なる処理を~/.profileします。~/.bash_profile~/.bash_profile手動説明する)。これを実行してGUIセッションを初期化し、スクリプトソースがFedoraにのみ存在するように見えることをjournalctl確認できます。/etc/X11/xinit/XsessionXsession/etc/X11/xinit/xinitrc-common~/.profile

私の2セント。

関連情報