linux - 无法加载基本命令,如 ls、touch 等。在终端

标签 linux bash macos shell

我无法在我的终端上使用像 ls 这样的基本命令。以下是我无法使用它们之后执行的步骤。

我已经使用终端卸载了 anaconda。我使用 rm -Rf anaconda 删除了整个目录。然后我使用 open ~/.bash_profile 删除了 anaconda 创建的路径。然后我保存了 .bash_profile。完成此步骤后,我无法访问基本命令。

所以我用谷歌搜索了一下。我想到了这个链接:https://superuser.com/questions/1061765/getting-the-following-error-when-using-ls-in-mac-terminal-bash-ls-command-no?newreg=f6c3fe6862de4085b0ce20a82f0394dd

根据提供的答案。当我键入命令 export PATH=/bin:/usr/bin:$PATH 并点击 return 时。命令开始工作。但是当我关闭我的终端并再次重新启动它时,这些命令仍然不起作用。我再次需要输入命令 export PATH=/bin:/usr/bin:$PATH。根据答案,我必须在 .bash_profile 文件中进行更改才能自动加载命令。我做了相应的更改,但仍然无法直接加载它们。这是我当前的 .bash_profile

# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"

export PATH=/bin:/usr/bin:$PATH
export PATH=/bin:/usr/bin:/usr/local/bin:
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
export PATH=/usr/local/bin

我是终端的新手。我不太熟悉 PATH。如果你能以某种方式帮助我,我将不胜感激。

最佳答案

您可以随时键入 /bin/ls(或 /usr/bin/gcc/bin/cp)和其他完整路径的标准程序。例如,命令 /bin/ls *.c/bin/pwd 应该仍然可以在错误的 PATH 设置下工作。

您对 PATH 的理解是错误的。它应该包含几个 目录,用冒号: 分隔。在 PATH (variable) 上阅读维基页面和 Unix shell -s.

你可能想要

export PATH=/bin:/usr/bin:/usr/local/bin:$HOME/bin

(PATH 中条目的顺序对 exec(3) 函数和 shell 很重要;您可以决定将 $HOME/bin 放在前面,等等。 ...)

你可能想编辑你的~/.bashrc(或者~/.bash_profile,但我推荐~/.bashrc 因为您只想更改 interactive shell 文件的行为以在其中添加上面的行。顺便说一句,那些 ~/.bash* 文件只在 shell 初始化时读取,所以你实际上需要打开一个新的终端来获取它们(或者用例如 exec/bin/bash< 重新启动你的 shell/)

要运行您的编辑器,您需要知道它的名称(例如 vimemacsnano ....)并找到它小路。有时 EDITOR 环境变量设置正确(因此尝试 /bin/echo $EDITOR 并查看 environ(7) )。顺便说一句,您可以为此使用 /usr/bin/find 命令。例如,如果您熟悉 emacs,您可以运行 /usr/bin/emacs $HOME/.bashrc

请注意 $HOME$EDITOR 是(如您问题中的 $PATH)扩展 shell 。了解 shell expansionsbash 中,阅读 globbing .参见 glob(7)

另见 Advanced Bash Scripting Guide

关于linux - 无法加载基本命令,如 ls、touch 等。在终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082535/

相关文章:

mysql - Mac 上的 2 个虚拟主机

xcode - 在AppKit中为macOS SwiftUI应用设置主窗口标题吗?

linux - Chef Recipe - 用 sed 命令替换 Linux 文件中的文本(接收错误)

linux - 用于复制、重命名和更改文件所有者权限的 Shell 脚本

c++ - 如何捕获 SIGBUS 错误?

linux - 想要在linux中查找任何文件中对某个字符串的引用

java - Linux MV 命令来自 Java

html - 是否可以定义一个 HTML 选择器来连接多个选择器并用分号分隔它们?

android - 在 Android 上使用 librtmp 编译 FFMPEG 时出现 "Undefined Reference"

macos - 将 NSMutableArray 绑定(bind)到单个列 NSTableView 的简单方法是什么