我正在尝试学习 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。