终端找不到任何命令!

终端找不到任何命令!

我在 Mac OSX 上使用 brew 安装最新版本的 perl,然后 perl 提示我使用 local::lib 创建我自己的从 CPAN 下载的 Perl 包的目录。这是我的命令的历史记录:

  431  brew install perl
#recommended to do by brew
  432    PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib
  433    echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >> ~/.bash_profile
#executing recommendation
  434  sudo   PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib
  436  echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >> ~/.bash_profile
  437  perl program.pl

然后我尝试运行我的 perl 脚本,但收到此错误:

Can't locate getopts.pl in @INC

所以我安装了 Getopt::Std,它替换了 getopt.pl

sudo cpan> install Perl4::CoreLibs

然后 perl 脚本就可以正常工作了。但是,它仅在我进行上述所有安装的终端中有效。然后我尝试调用其他环境变量,例如“python”或“open -a TextEdit ~/.bash_profile”来查看是否可以执行这些变量,但我得到:

-bash: command: command not found

我尝试寻找 bash_profile 文件,但似乎在任何地方都找不到它,也许在创建这个新目录时它已被删除?当我尝试查找路径变量时,我得到了这个,只是不知道如何解释:

    echo PATH=$PATH
PATH="/Users/miseq/perl5/bin${PATH:+:${PATH}}"; export PATH; PERL5LIB="/Users/miseq/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB; PERL_LOCAL_LIB_ROOT="/Users/miseq/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT; PERL_MB_OPT="--install_base \"/Users/miseq/perl5\""; export PERL_MB_OPT; PERL_MM_OPT="INSTALL_BASE=/Users/miseq/perl5"; export PERL_MM_OPT;

此外,当我打开新终端时,我收到以下消息:

-bash: perl: command not found

这让我相信我所做的 perl 安装给我带来了无法从 shell 调用任何环境变量的问题。有什么帮助吗?

非常感谢

答案1

您发布的命令看起来是正确的,但显然您的最终结果.bash_profile是不正确的。这路径变量包含 shell 和其他程序查找命令的目录列表。此列表由用冒号 ( ) 连接在一起的项目表示:。例如,一个简单的 PATH 是/usr/local/bin:/usr/bin:/bin,使用 shell 命令设置

PATH=/usr/local/bin:/usr/bin:bin

然后,当您键入命令 时ls,shell 会先查找/usr/local/bin/ls,然后查找 for /usr/bin/ls,然后/bin/ls执行找到的第一个命令。

在您的情况下,变量的内容是设置变量的指令,而不是实际的目录列表。由于目录列表不包含任何标准目录,因此除了少数内置命令之外,您的 shell 找不到任何命令。

编辑文件~/.bash_profile并删除无效PATH设置,然后打开新终端。您可以将其放在#行的开头以将其注释掉。如果您想从终端编辑文件,请首先设置一个合理的PATH,例如上面的(当您在命令行上运行此文件时,它仅在该终端内有效)。

如果您不确定什么是好的,什么是不好的,请编辑您的问题并复制粘贴 的内容~/.bash_profile

相关内容