我的f
中有一个名为$PATH
的程序,我可以通过在终端中输入f
来执行它。但是,之后在同一个终端输入which f
,它会输出错误:which: no f in (...)
,它会在括号中给出完整路径(确实包含f
本身的正确路径)。
然后使用type f
我得到了正确的结果。
有没有人知道为什么会这样?
以下是评论中提问的答案:
f本身是perl脚本的符号链接:
vwos3xz@vwososuvs012:~$ls -l $(command -v f)
lrwxrwxrwx 1 root root 42 2. Aug 2012 /tef/tegf/06_CAE_System/064_soft/PERL_SCRIPTE/bin/f -> ../CRASH_SCRIPTE/FEMSTARTER/fem-starter.pl
实际上,fem_starter.pl本身是同一目录中fem_starter-1.77.pl的符号链接
我有理由相信路径中没有拼写错误,因为我只需在终端中输入f
并让它运行(同样,输入和命令-v工作)
我在.bashrc中设置路径,但.bash_profile存在,只是源.bashrc。另外,我将BASH_ENV设置为我的.bashrc。
type f
返回f ist /tef/tegf/06_CAE_System/064_soft/PERL_SCRIPTE/bin/f
,command -v
返回/tef/tegf/06_CAE_System/064_soft/PERL_SCRIPTE/bin/f
。此外,type -a f
返回与type f
相同的内容。
"你打开了一个新窗口吗?" ...你的意思是一个新的终端?我做了,但那没有什么区别。我使用了xterm和konsole,我确实从窗口管理器和另一个xterm开始。每次,$ PATH都已正确设置,但没有按预期工作。