我在 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
。