+ -
当前位置:首页 → 问答吧 → perl使用system调用history返回值为-1

perl使用system调用history返回值为-1

时间:2010-09-28

来源:互联网

本帖最后由 hutule110 于 2010-09-28 17:00 编辑
  1. use strict;
  2. #!/usr/bin/perl -w
  3. print system 'history';
复制代码
打印出来的值为 -1;
  1. use strict;
  2. #!/usr/bin/perl -w
  3. print system 'ls -l';
复制代码
打印出来是 ls -l的效果.
想知道为什么会有这种差异?

作者: hutule110   发布时间: 2010-09-28

用bash也是同样的效果,history这个命令和ls 这样的命令有啥区别么?

作者: hutule110   发布时间: 2010-09-28

看看shell环境

作者: gaochong   发布时间: 2010-09-28

  1. declare -x ACLOCAL_FLAGS="-I /opt/gnome/share/aclocal"
  2. declare -x COLORTERM="1"
  3. declare -x CPU="i686"
  4. declare -x CSHEDIT="emacs"
  5. declare -x ENV="/etc/bash.bashrc"
  6. declare -x FROM_HEADER=""
  7. declare -x GNOME2_PATH="/usr/local:/opt/gnome:/usr"
  8. declare -x GROFF_NO_SGR="yes"
  9. declare -x GTK_PATH="/usr/local/lib/gtk-2.0:/opt/gnome/lib/gtk-2.0:/usr/lib/gtk-2.0"
  10. declare -x G_BROKEN_FILENAMES="1"
  11. declare -x G_FILENAME_ENCODING="@locale,UTF-8,GB2312,GB18030,GBK,ISO-8859-1"
  12. declare -x HISTSIZE="1000"
  13. declare -x HOME="/root"
  14. declare -x HOST=""
  15. declare -x HOSTNAME="feixue"
  16. declare -x HOSTTYPE="i386"
  17. declare -x INFODIR="/usr/local/info:/usr/share/info:/usr/info"
  18. declare -x INFOPATH="/usr/local/info:/usr/share/info:/usr/info:/opt/gnome/share/info"
  19. declare -x INPUTRC="/etc/inputrc"
  20. declare -x ISR40_HOME="/opt/xisr40"
  21. declare -x LANG="zh_CN.UTF-8"
  22. declare -x LC_ALL="C"
  23. declare -x LD_LIBRARY_PATH="/opt/xisr40/lib:"
  24. declare -x LESS="-M -I"
  25. declare -x LESSCLOSE="lessclose.sh %s %s"
  26. declare -x LESSKEY="/etc/lesskey.bin"
  27. declare -x LESSOPEN="lessopen.sh %s"
  28. declare -x LESS_ADVANCED_PREPROCESSOR="no"
  29. declare -x LOGNAME="root"
  30. declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:"
  31. declare -x LS_OPTIONS="-A -N --color=tty -T 0"
  32. declare -x MACHTYPE="i686-suse-linux"
  33. declare -x MAIL="/var/mail/root"
  34. declare -x MANPATH="/usr/share/man:/usr/local/man:/usr/local/share/man:/usr/X11R6/man:/opt/gnome/share/man"
  35. declare -x MINICOM="-c on"
  36. declare -x MORE="-sl"
  37. declare -x NNTPSERVER="news"
  38. declare -x OLDPWD="/home/msp"
  39. declare -x OSTYPE="linux"
  40. declare -x PAGER="less"
  41. declare -x PATH="/sbin:/usr/sbin:/usr/local/sbin:/opt/gnome/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/bin:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin"
  42. declare -x PKG_CONFIG_PATH="/opt/gnome/lib/pkgconfig:/opt/gnome/share/pkgconfig"
  43. declare -rx PROFILEREAD="true"
  44. declare -x PWD="/home/msp/ctest"
  45. declare -x PYTHONSTARTUP="/etc/pythonstart"
  46. declare -x QT_SYSTEM_DIR="/usr/share/desktop-data"
  47. declare -x SHELL="/bin/bash"
  48. declare -x SHLVL="1"
  49. declare -x SSH_CLIENT="192.168.70.48 1471 22"
  50. declare -x SSH_CONNECTION="192.168.70.48 1471 192.168.72.78 22"
  51. declare -x SSH_TTY="/dev/pts/0"
  52. declare -x TERM="linux"
  53. declare -x TEXINPUTS=":/root/.TeX:/usr/share/doc/.TeX:/usr/doc/.TeX"
  54. declare -x USER="root"
  55. declare -x WINDOWMANAGER="/usr/X11R6/bin/gnome"
  56. declare -x XCURSOR_THEME="Industrial"
  57. declare -x XDG_CONFIG_DIRS="/usr/local/etc/xdg/:/etc/xdg/:/etc/opt/gnome/xdg/"
  58. declare -x XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/etc/opt/kde3/share/:/opt/kde3/share/:/opt/gnome/share/"
  59. declare -x XKEYSYMDB="/usr/X11R6/lib/X11/XKeysymDB"
  60. declare -x XNLSPATH="/usr/X11R6/lib/X11/nls"
复制代码

作者: hutule110   发布时间: 2010-09-28

system函數返回的是執行程序的退出狀態. system(ls -l)最後也會打印0,

2者的不同懷疑是程序內部處理輸出的問題

作者: wind_ch   发布时间: 2010-09-28

$ type history
history is a shell builtin
$

作者: flw   发布时间: 2010-09-28