编辑 bash_profile?

编辑 bash_profile?

我正在尝试学习 bash。我正在使用 ubuntu。

我想添加一个功能。我不确定是否需要创建一个.profile.bash_profile文件,所以我在目录中创建了两者~/

我在每个里面都添加了类似的内容:

myfunc()
{
    echo "function ran"
}

我注销我的用户并重新登录,在命令行中运行此命令:

我@主机:~$ myfunc

仅返回:

myfunc:未找到命令

不确定我做错了什么。

答案1

您的 ~/.profile 或 ~/.bash_profile 由登录进程提供。您在终端窗口中运行的 shell 在另一个进程中运行,该进程是登录进程的子​​进程。登录进程所做的某些设置会导出到子进程,但别名和函数定义不会。别名和函数应该在您的 shell 的 rc 文件(在本例中为 ~/.bashrc)中定义。该文件由每个交互式 bash 进程提供。

至于是否应该将环境变量设置和其他启动代码放在~/.profile 或 ~/.bash_profile 中,男子猛击表示登录 shell 会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,并读取找到的第一个文件。因此,如果您同时拥有 ~/.bash_profile 和 ~/.profile,则只会读取 ~/.bash_profile,而忽略 ~/.profile。使用哪个文件由您决定,但如果您计划使用 bash 以外的 shell,则可能需要将您的设置放入 ~/.profile 中并删除 ~/.bash_profile。

答案2

在命令行上只需输入:

function myfunc()

进入

{

进入

echo "function ran"

进入

}

进入

通过如下输入函数来调用该函数:

$ myfunc

使用以下方法删除该功能:

unset -f myfunc

查看以下以了解更多信息:

答案3

要查看哪些文件按什么顺序执行,您可能需要在这些文件中放置一个 echo 或 printf 命令。然后您将看到它们何时执行。

# You could try this
echo "This will be printed"
printf "This will also be printed (%d)\n" 10

要了解 echo 和 print 的工作原理,您可以使用 man(1) 命令并查看 bash(1) 的手册页。命令后的括号告诉您在手册中的哪一节可以找到该信息。1 表示普通命令。您应该尝试以下命令:

man man
man -k manual
man bash

在 bash 手册页中,搜索“SHELL BUILTIN COMMANDS”部分(尝试使用 / 并输入您要搜索的内容,或使用空格键)。这里有关于 bash 内置命令的信息,例如 echo 和 printf。

相关内容