为什么我无法将函数定义源到 .bashrc 中并由 .profile 读取?

为什么我无法将函数定义源到 .bashrc 中并由 .profile 读取?

我有3个配置文件:.bashrcsources.bashrc_common.profilesources .bashrc。不幸的是,在登录 Gnome 时,我收到一条错误消息,指出未找到in.bashrc命令。foo但如果foo是在 来源的文件中定义的.bashrc,为什么找不到它呢?

# .profile

if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi
# .bashrc_common

function foo {
    echo "foo $1"
}

# .bashrc

source $HOME/.bashrc_common
#.....
foo "hello"

请注意,这foo在我的终端 bash shell 中随处可用,只是 Ubuntu 登录引发了错误。

答案1

我从 .bashrc 获取的文件有一个显式的保护,阻止它在非交互调用时运行。这个故事的寓意是——如果您遇到 Gnome 启动的配置文件问题,请仔细检查它们是否没有任何明确的“仅在交互式 shell 中运行”检查。

答案2

我认为您的 GNOME 运行的是登录 shell,而不是交互式非登录 shell,原因是您的bashrc没有来源。

只需附加到末尾即可bash_登录下列 :

source ~/.bashrc

相关内容