Setting the PATH variable for a new command in Perl shows error: Command not found
Setting the PATH variable for a new command in Perl shows error: Command not found
我正在编写 Perl 脚本来添加新命令。
为此:
我已经使用set env PATH
命令并添加了包含脚本的目录(名称与命令名称相同)。
我也使脚本可执行。
我都试过这样做:
- 明确:在终端上使用
setenv PATH $PATH":home/user/trial_dir"
此处显示:Command not found
当我键入命令名称时。
- 脚本:
export PATH = "home/user/trial_dir".":".$PATH;
这里说:
Can't locate object method "export" via package "PATH"
(perhaps you forgot to load "PATH"?)
你的 shell 是什么? setenv
是 csh 语法,但错误信息看起来像 Bash 错误信息。无论如何,csh
和 tcsh
的正确语法是
setenv PATH $PATH":/home/user/trial_dir"
请特别注意 home
之前添加的斜线。 PATH
中的相对路径通常没有意义。我猜这就是你第一次尝试失败的原因。
此外,如果脚本文件有 DOS CRLF line terminators (in particular, on the shebang line),那会产生相同的症状——消息是 debug: command not found
,即使实际上找到了 debug
脚本,但是找不到 shebang 行上的命令。 (您会注意到 which debug
表示 tcsh
实际上找到了这种情况下的脚本。)
第二次尝试是错误的,因为 (a) 在 sh
语法中赋值周围不能有空格,而 (b) 错误消息看起来像是您以某种方式将此命令传递给了 Perl 而不是 shell("Script:" 是什么意思?)
Bash(或通常 *sh
除了 *csh
)提示符的正确语法是
export PATH="/home/user/trial_dir":$PATH
(我在这里也在 home
之前添加了前导 /
)但是因为你说你正在使用 tcsh
我只是为了完整性而提到这个。这不是有效的 Perl 命令。
虽然这种方法没有任何问题,但通常的做法是将您的脚本(或它的符号链接)放在 $HOME/bin
中,并一劳永逸地确保 $HOME/bin
在你的 PATH
(这已经是某些 Linux 发行版的默认设置)。
您添加的目录应该位于前一个 PATH
之前还是之后,这在很大程度上取决于个人喜好。现代 shells 通常使用散列,因此只有在您第一次尝试使用它时才会查找该命令,之后,shell 会记住可以找到它的位置。如果您经常输入错误的命令,请尽量限制您的 PATH
。 :-) 如果您的命令需要遮蔽系统命令,请务必将新目录放在系统前面 PATH
.
我正在编写 Perl 脚本来添加新命令。 为此:
我已经使用set env
PATH
命令并添加了包含脚本的目录(名称与命令名称相同)。我也使脚本可执行。
我都试过这样做:
- 明确:在终端上使用
setenv PATH $PATH":home/user/trial_dir"
此处显示:Command not found
当我键入命令名称时。
- 脚本:
export PATH = "home/user/trial_dir".":".$PATH;
这里说:
Can't locate object method "export" via package "PATH"
(perhaps you forgot to load "PATH"?)
你的 shell 是什么? setenv
是 csh 语法,但错误信息看起来像 Bash 错误信息。无论如何,csh
和 tcsh
的正确语法是
setenv PATH $PATH":/home/user/trial_dir"
请特别注意 home
之前添加的斜线。 PATH
中的相对路径通常没有意义。我猜这就是你第一次尝试失败的原因。
此外,如果脚本文件有 DOS CRLF line terminators (in particular, on the shebang line),那会产生相同的症状——消息是 debug: command not found
,即使实际上找到了 debug
脚本,但是找不到 shebang 行上的命令。 (您会注意到 which debug
表示 tcsh
实际上找到了这种情况下的脚本。)
第二次尝试是错误的,因为 (a) 在 sh
语法中赋值周围不能有空格,而 (b) 错误消息看起来像是您以某种方式将此命令传递给了 Perl 而不是 shell("Script:" 是什么意思?)
Bash(或通常 *sh
除了 *csh
)提示符的正确语法是
export PATH="/home/user/trial_dir":$PATH
(我在这里也在 home
之前添加了前导 /
)但是因为你说你正在使用 tcsh
我只是为了完整性而提到这个。这不是有效的 Perl 命令。
虽然这种方法没有任何问题,但通常的做法是将您的脚本(或它的符号链接)放在 $HOME/bin
中,并一劳永逸地确保 $HOME/bin
在你的 PATH
(这已经是某些 Linux 发行版的默认设置)。
您添加的目录应该位于前一个 PATH
之前还是之后,这在很大程度上取决于个人喜好。现代 shells 通常使用散列,因此只有在您第一次尝试使用它时才会查找该命令,之后,shell 会记住可以找到它的位置。如果您经常输入错误的命令,请尽量限制您的 PATH
。 :-) 如果您的命令需要遮蔽系统命令,请务必将新目录放在系统前面 PATH
.