  PATH HOWTO

  Esa Turtiainen mailto: etu@dna.fi <mailto: etu@dna.fi>
  v0.4, 15 November 1997
  :  gogoonee@bbs.para.co.kr <mailto: gogoonee@bbs.para.co.kr>

  1.  Introduction

    unix  linux ȯ , Ư path  Ϲ ɰ
   ϰ ִ.  path  ɾ ã 丮 
  Ʈ   1.3   Ѵ.  Ѱ ˾Ƶ 
  ̱ Ÿ̶ ̴. Ҹ̳  ˷ָ ڴ.

  2.  Copyright

    Ӵ.  free software foundation   gplϿ 
  Ҽ ְ Ҽ ִ. ( gpl 2 Ǵ    °
   ̴)

    ϰ ̱⸦ ٶ  ɻ,   
     ̳ Ư Ǵ°͵ ƴϴ. ڼ
   ˰ GNU gpl о.

     Բ GNU gpl   ֱ ٶ. ׷ ʴٸ
   ּҷ    Free Software Foundation, Inc., 675 Mass
  Ave, Cambridge, MA 02139, USA.

  3.  General

   н μ "ȯ"  ִ. ̰ 
  Ʈ name ̳ Ǵ Ư  ̴.(Ѵ  string μ
  κ character   ִ).  н μ зƮ
  μ (θ μ)  ִ (θ μ 
  μ ()  μ ̶  μ ϵ
  μ Ѵ(ڽ μ)). ڽ μ θ μκ
  ȯ ް ǰ ڽ μ  ٽ ڱ ڽμ
  鼭 ȯ ٲܼ ִ.

    ߿ ȯ溯  ϳ path ̴. path ɾ
  ã ˻ؾߵ 丮 Ʈμ ݷ(:) еǾ.
     'foo'  ɾ ƴٸ path  ǵ 
  丮 ˻ Ǿ (x Ʈ on  ) 'foo'
   ãԵǰ ߰  Ǹ  ȴ.

   howto   path ī  ª ̸(Ǯ н
   ƴ:) ȣǾ   'ɾ'(command)
   θڴ.

   μ ϱ   ü ý ȣ⵵
  (exec йи ݵ) path   丮 ˻Ͽ Ǿ:
    𿡼  ϰ path ī 
  Ǿ.  , exec ý  '/' Ե  ϳ(,
  Ǯн   Ѱ: )   䱸 path 
  ϰ ǰ PATH  Ǿ ʴ  /bin  /usr/bin
  丮     ˻Ǿ  ̴.

  ȯ溯  sh  export ɾ ϰ csh  setenv
  ɾ Ѵ.   :

  sh: PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:.

  csh: setenv PATH usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:.

  C-α׷  setenv() ̺귯 Ͽ ȯ ٲ  
  . Peal %ENV     ־   path
    ִ.

  $ENV{PATH}="/bin".

  env ɾ  ȯ溯 ˾ƺµ ⺻ ɾ̸ 
  ȯ  ٲٴ    ִ.

  ⺻ ȯ() ī   Ŵ 
  'environ', ٶ.

   õ   ó ۵Ǵ  init μ̴.  ̰
  Ư μμ  μ  Ǹ ڽ
  θμ  ʴ´.  init  ȯ ϰ ٲ ʴ
  ٸ  μ  ȯμ ְ ȴ.(  κ
  μ ȯ  Ѵ)

  init   μ ׷ Űµ, /etc/inittab  
   μ ۽ų ˷ش.  μ init κ
   ȯ   ǰ,  'getty'(ֿܼ 'login:'̶
  Ÿִ μ)  ͵ ִ.  ⼭(ý ŸƮ ÿ)
  ppp Ѵٸ   init ȯ溯 Ʒ ǰ 
  ˾ƾ Ѵ. ý ʱ ȭ  ⼭ ۵Ǵ ũƮ鿡 
  ̷ .   1.3 ʱȭ /etc/init.d/rc ̸  ũƮ
   ٽ ٸ ʱȭ ũƮ  ȣѴ.

  ýۿ ư ִ  (̶ ) ִµ  ͵
   Ʈ ȯ溯   ׷  ִµ, κ 
   ʱȭ ũƮ Ǿ ׷ init  ȯ 
   .

  ڰ ýۿ α ϰԵǸ ȯ溯 α׷ ϵǾ
   ȯ溯  ؼ, Ǵ ý ݿ  ִ ʱȭ
   ŰƮ  ʱȭ ũƮ  ϰ ȴ. ̰ 
  ϰ ⼭ ϱ⿡ ġ ʴٰ .   ڰ
  ַܼ α  ϴ , ƴϸ xdm Ǵ network ؼ α
  ϰԵǴ  찡  ٸ ȴ.

  4.  Init

  init  ٸ  μ θ μμ, ٸ μ
  init  ȯ  ǰ ٸ н  ʴ( ̴)
  init path  ȴ.

  init path init α׷ ҽ     ִ.

  /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin

  init path /usr/local/bin  ʴٴ   α 
  .  /etc/inittab , Ư ý ʱȭ ũƮ
  /etc/int.dκ  Ǵ  α׷  init ȯ濡 
  ȴ. (debian 1.3)

  ý ʱȭ ũƮ  Ǵ  ͵ init  ȯ 
  Ʈȯ  Ǵµ ̷ѰͿ syslogd, kerneld, pppd (ý
  ý ۵ ) , gpm, ׸  ߿ lpd  inetd  ׷ϸ
    Ʈ ȯ ٲ ʴ´.

   ũƮ ۵Ǵ   α׷߿  ũƮ
  path  Ǳ⵵ ϴµ ̷ Ϳ atd, sendmail, apache 
   squid ִ.  ýũƮ ۵Ǵ α׷߿ path
  ƿ ٲ ͵ ִµ   cron ̴.

  5.  Login

  ؽƮ ֿܼ getty  α׷  α ٸ. 
  α׷ 'login:'  ޽ ȭ鿡 Ÿ init
  ȯ溯Ͽ ȴ. ڰ α ϰԵǸ getty login
  α׷ ⵿Ű login  ȯ ϰ shell ⵿Ѵ.

  login α׷ /usr/include.path.h   path Ѵ. 
   ڸ  н  .(_PATH_DEFPATH)

  /usr/local/bin:/usr/bin:/bin:.

  root ؼ  Ǿִ. (_PATH_DEFPATH_ROOT)

  /sbin:/bin:/usr/sbin:/usr/bin

  Ϲݻ н  sbin 丮 ϰ ʴ. ׷
  丮 '.' ϰ ִµ  丮 path ִ 
  rootԴ    찡 .  root
  /usr/local/bin 丮 path .

  α н   ʱȭ  Ǿ. ׷  
   /etc/passwd   ̴  ٸ α׷ ɼ ִ. 
    Ư   α ϴ 쿡 ppp ŸƮ 
  Ű    ̿Ѵ.(  pppd н  login 
  α׷ н )

  etu-ppp:viYabVlxPwzDl:1000:1000:Esa Turtiainen,PPP:/:/usr/sbin/pppd

  6.  Shells

   μ /etc/passwd    ڽμ 찡
     ʱȭ Ͽ ؼ path Ǿ 찡 .
  login α׷  ̸տ '-'  ٴ´.  bash
  ˸.  쿡  α ʱȭ  ϰ ȴ. α 
  ƴҰ쿡  ʱȭ ̷.

  ߰,  ȣ ȭĽ , ɾ Ϸκ Է Ǵ
   tty Է Ǵ üũ ϴµ ̰  ʱȭ ϰ
    ׷ ȭ  ƴϰ α  ƴ϶ ʱȭ 
  ϰ ̷.(bash ̰쿡 ƹ ʱȭ  ʴ´!)

  6.1.  bash

   α μ bash ýݿ  ̴ /etc/profile 
   Ѵ. ⿡ ý ȯ path bash ڸ  
     ִ.

  ׷ ý ȭ  ƴ϶ Ǵϰ Ǹ   
  ʴ´. ߿  Ʈ ɾ Ǵ rsh  ִµ 
   /etc/profile  ʰ path rsh 󿡰Լ ӵǾ.

  bash  μ -login -i ν α  ƴ  ȭ 
   ƴ   ִ.  ڴ Ȩ丮  /.bash_profile,
   /.bash_login Ǵ  /.profile   /etc/profile  
     ִ.   csh ʱȭ  ٸ 
   ó͸ ȴٴ ̴.   /.bash_login  α  
     /.bash_profile  ִٸ  /.bash_login 
  ȵȴ!!

   bash sh  ̸ Ǿٸ bash   
  ȭ ķƮѴ.  , /etc/profile,  /.profile  α 
  ʱ ȭ .

  6.2.  tcsh

  tcsh  α ̸ tcsh    ϵ Ѵ.

  ______________________________________________________________________
     /etc/csh.cshrc
     /etc/csh.login
     ~/.tcshrc
     ~/.cshrc (.tcshrc  °)
     ~/.history
     ~/.login
     ~/.cshdirs
  ______________________________________________________________________

  tcsh cshrc ũƮ  login ũƮ  ϵ Ҽ
   ִ. ˾Ƶξ!

  ȭ  ƴҰ쿡  *cshrcũƮ ȴ. *login ũ
  Ʈ path ϱ  α ÿ ѹ ȴ.

  7.  Changing user ID

  7.1.  su

  su ɾ Ҷ Ϸ ο ̵ ִµ ƹ͵
    root  ȴ.    su  ٸ̵
  꽩 ⵿ϴµ, ƱԸƮ '-'( ٿ -l Ǵ -login) 
   su  αν ⵿Ѵ. ·ų su ̷  ϱ
  loginα׷ ¾ʴ´.  α ùķ̼(ҽ ڵ忡 
   )  ٸ (built in) path ȴ.

   path ϹݻڿԴ /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:.

  root Դ

  /sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
  ̴.

  Ӹ ƴ϶ su ϳ ̼ ȯ漳 ȭ ´.

  7.2.  sudo

   ɾ  ϰ ֵ ϴ ɾ ִµ
  ̰͵   α  Ѱ  н  
  ϰ ش.  θ̴  sudo ̴.

  $ sudo env

    env    ϰ Ѵ. ( װ 
  ϰԲ  Ǿִٸ) sudo ɾ path ٷµ ־ Ǵٸ
  ٹ  ִµ, path ٲ㼭 ׻  丮 path
   ְ Ѵ. ׷ PATH  ٲ   SUDO_USER
     ȯ  鸸 ٲ۴.

  8.  Network servers

  κ Ʈũ    μ  ʴ°
  .  Ѵٸ  μ path  ּ ̿ Ѵ.
  Ѱ ߿ ܰ ִٸ Ʈũκ α ϴ 񽺵
  .  忡  쿡  ȯ ̴ ϰ ִ. 
  rsh   ɾ Ʈ ӽſ Ǹ path  ssh
  ϴ°  ٸ. ϰ rlogin telnet Ǵ ssh α
    ٸ .

  8.1.  inetd

  κ Ʈũ  Ʈ ٸ ϰ ִ  
  μ   ʴ.   inetd ͳ   
  ϰ Ǵµ, inetd   Ʈũ Ʈ  ִٰ
  Ʈ   شϴ  ⵿Ѵ.

  inetd   /etc/inetd.conf ̴.  inetd ý 
  ũƮ ۵Ǿ . init μκ path ӹް
   ʴ´. ׷ inetd κ ۵Ǵ   init
  path  ִ.  μ IMAP post office  imapd
  ִ ٸ inetdμ telnet, rlogin, talkd, ftp, popd, 
  http  ִ.

    ϱ  и(?: ) tcpd α׷
   Ѵٸ inetd    ϴ. tcpd  ø
  ̼ ۵Ǳ  ߰   ϰԵǴµ path ٲ
  ʴ´.(Ȯغ ʾ)

  8.2.  rsh

  rsh  Ϲݻڸ  α α׷ ϴ°Ͱ 
  _PATH_DEFPATH (/usr/include/paths.h) κ path Ѵ. root 
  Ϲ  path ´.  , rshd  commandline 
  Ķ( command-line: )   ɾ
  ϴ ̴.

  shell -c command-line

  ̰ α ƴϴ. /etc/passwd  ϵ   -c ɼ
  ϴ Ȯϱ ٶ.

  8.3.  rlogin

  Rlogin  real login  ϱ login ⵿Ѵ. rlogin
   α Ѵٸ login   path   ̴. ٸ
   α κ login  ʴ´. rsh  ٸٴ Ϳ
  ϱ ٶ.

   login    ϴµ

  login -p -h host-name user-name

  -p ɼ HOME, PATH, SHELL, TERM, MAIL, LOGNAME  ȯ溯
   ִ ״ ϰ, -h ɼ α Ʈ ȣ Ʈ 
  ˷ְ ȴ.

  8.4.  telnet

  telnet rlogin  ϴ. login α׷ ϸ ɽ൵
  rlogin   ̷.

  8.5.  ssh

  ssh  ڽŸ path ġ  ִ. ssh  path  
   ssh  ִ path ߰ ̴.  ̷ ν
  /usr/bin 丮 н   Ÿ Ǳ⵵ Ѵ.

  /usr/local/bin:/usr/bin:/bin:.:/usr/bin

  path /usr/X11/bin   , ssh ⵿  α 
  ƴϴ. ׷Ƿ

  ssh remotehost xterm

  ̷   ʰ /etc/profile̳ /etc/csh.cshrc ٲش
  ص ҿ. Ϸ Ǯ н Ѵ (/usr/bin/X11/xterm)
  ssh /etc/environment Ͼ VAR=VALUE, ̷  ȯ溯 
  оδ. ׷ XFree86   Ų. (ڿ ߰ 
  : )

  9.  XFree86

  9.1.  XDM

  XDM ׷ ȯ ͹̳η α ÿ  Ǵ ̴. login
   ϰ  𸣳 δ  ٸ̴.   ٸ
  α  ϱ  ϵ /etc/X11/xdm  丮
  ִ. Xstartup (screen 0  Xstartup_0)   α Ǵ
  ɵ ִ.( root  Ǿ)   path
   /etc/X11/xdm/xdm-config Ͽ ִ.   εε

  DisplayManager*userPath:
  /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

  DisplayManager*systemPath:
  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

  翬 Ϲ ڿ root  ⺻ path  ɰ̸ /usr/bin/X11 
  丮 path ɷִٴ Ϳ ָϱ ٶ. ࿡ X  ٸ
  ӽſ  X Ŭ̾Ʈ α׷ ϱ ؼ (X terminal
    α  ʾҴ..)  /usr/bin/X11  path ɷ־
  Ѵ.

  Xstartup  XDM ڷμ /etc/X11/Xsession 
  Ѵ. /etc/environment  Ѵٸ Xsession   ҷ
  ̰ Į   Ͽ  ȴ.(Xsesion /bin/sh   
  ǹǷ /etc/environment  sh̾ Ѵ)   ssh 
    ߻Ѵ. ssh /etc/environment VAR=VALUE, ̷  
  ε  ִ  ̶ ϱ ̴.

  9.2.  xterm -ls

  Ʈ X window޴ ޴κ  ɵ  path XDM
  κ ӹ ̴. ٸ path Ѵٸ   Ѵ.
   ⺻ н  ͹̳ ķ͸ Ϸ Ư ɼ
   Ǿ Ѵ. xterm -ls(login shell) ɼ Ͽ
  shell α ʱȭ  path  α  ⵿  ִ.

  9.3.  Window manager menus and buttons

   ޴ XDMκ ȯ溯 ޴´.  ޴
     α׷  ޴ ȯ ޴´.
    ȯ溯  ޴ ư̳ ޴κ Ǵ
  α׷  ġ ʴ´. , 'xterm -ls'
  α׷ ŸƮ ȴٸ α  ⺻ ȯ  ǳ, ޴
  ȴٸ,   ޴ ȯ游 ̴.

  10.  Delayed commands cron and at

  10.1.  cron

  Cron  ֱ /etc/crontab   crontabs 
  ϴ ɾ̴.  1.3  /etc/cron.daily,
  /etc/cron.weekly, /etc/cron.monthly ϵν ǥ 
  ϰ ȴ.  Cron  Ʈ ƮƮ ۵ǳ ڽ path
     ٲ۴. ,

  /usr/bin:/binn:/sbin:/bin:/usr/sbin:/usr/bin ̰ cron   
  !!!  init  path պκп /usr/bin:/bin   ̴!
   ״ ٸ  ýۿ ϴ  ƴϴ.  crontab  path
  Ǹ   ִµ,  1.3 /etc/crontab  պκп 
  ⺻   ִ.

  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
  , crond α׷ PATH  α׷ 
  ,   /etc.cron* 丮  ƮƮ  н ⺻
   Ѵ.   α׷ ڰ root ƴ϶ Ϲݻ
  쿡 crond α׷  н Ѵ.

  10.2.  at

  at  Ư ð α׷ ѹ ϱ  ϴ ɾ̴.

  atd  init  н ϳ,  α׷ sh ɾ ׻
    ȯϿ Ǿ. ׷Ƿ shell   ȯ溯
   . bash    о.

  11.  Some examples

  11.1.  magicfilter

  magicfilter  Ʈ  ٷ  ַ Ǵ ̴.
  Ʈ   мϿ   ũƮ ⵿Ѵ. ̷
  ũƮ init  /etc/init.d/lpd ۽Ų lpd  ϰ Ǹ
  ׷ init    ִ. ׷Ƿ /usr/bin/X11 path 
    ʴ!!  Ϳ PDF  ־ ϰ  ̴.
  ̰ /usr/bin/xpdf ϸ ϴ. ̶  Ǯн
  ϳ  Ѵ. ׷  ʹ  
  ã ̴. (׷ ) Ͱ ϴ κ
  α׷ /binǴ /usr/bin ֱ    ܿ Ǯн
  ʿ .

  11.2.  Printing from X applications

   ϴ Ͱ  Ÿ ؼ PRINTER ȯ溯 
   ִ. ׷  쿡 ۵  ִٴ° ˾Ƶα
  ٶ.

  ࿡ XDM X session ۵Ǿٸ  ޴ shell α
  ũƮ  ʴ´ٴ  ؾߵȴ. xterm  
  X application PRINTER   ޴  ޴ ư
   ȴٸ PRINTER ̴.   쿡 
  ӵǴ 쵵 ִ. ڸ  help α׷(÷ 
  α׷: -    ̶ θ) PRINTER  
   ְ ׷   ִ.

  12.  Security concerns

  н  ߴ ȹ ߱ϱ⵵ Ѵ. ߸ н ǿ
  Ͽ ý ŷϴ  Ѱ̴.  (?) н 
  Ǽ root н '.'  ִ°̴.  ִ Ŀ
  ڽ Ȩ丮 'ls' α׷ ξ root ó

  # cd  hacker # ls

  Ŀ ڽ 丮 ls ϰ Ǹ Ŀ  α׷
   ǵ Ѵ.  ̷ѿ root  Ǵ  α׷
    ȴ.   μ Ϲ  Ⱑ
  ̸  ͵ ؼ ȵȴ.  ýۿ /usr/local/bin
  丮 α  ְ ׸    ¿
  ִ.(  丮 root н ..) ·ų, ࿡ 
   'foo'   ϴµ /usr/local/bin 丮 н
  ɷִٸ '/bin/foo' ſ  ִ ڴ  ýۿ
  ħ   ְ ȴ.  н  丮 ''
   Ǳ 캸°͵  ߿ϴ.  /usr/local/bin
  /bin  տ н ɷִٸ ,..  װ ȹ ִ ̴.
  ݴ /bin  տְ /usr/local/bin  ڿִٸ ö
  /usr/local/bin ִ α׷ /bin  ִ  Ͽ 
  ɼ .

   н , ϴ  ü ý   ̷
  ٴ  ؾѴ.  ɾ Էϸ  
  丮 ˻Ǿ  /bin  /usr/bin  ˻Ǿ.

  13.  How to debug problems?

  ȯ溯 о帮 ⺻ɾ /usr/bin/env ̴.  /proc
  丮 ̿ϸ  α׷ н ˾Ƴ ִ. 
  μ ȣ ˾ƾ Ѵ. (ps ɾ ϸȴ) ,
  xterm μ ȣ 1088 ̸  ɾ α׷ ȯ溯
    ִ.

  # more /proc/1088/environ

    xdm   α׷Դ  ʴ´. ý 
   ȯ溯, Ǵ ٸ  μ ȯ溯 ˾Ƴ 
   root  ʿϴ.    غ. /tmp/test
  ũƮ :

       $ cat > /tmp/test
         #!/bin/sh
         /usr/bin/env > /tmp/env
         ^d
         $ chmod +x /tmp/test

  ׸  ƹ  α׷ Ѵ.  ,
  audio/x-pn-realaudio '/tmp/test' α׷ ȣϵѴ. ׷
     ũ ִµΰ ( www.realau
  dio.com/showcase <http://www.realaudio.com/showcase>), 
  /tmp/env  ȯ溯  ϴ  α׷( 
  ũƮ:) ȣҰ̴.

  14.  Some strategies to get the same path for all the users

   ߿   α   ʱȭ Ҽִ. tcsh
    /etc/csh.login bash  /etc/profile.  rsh , ssh ,
  α    ʴ X window޴ ޴۵,
  inittabκ ⵿ ɵ, cron job̳ lprd  ۵ 
  Ͱ  job,׸ WWW CGI ũƮ  ̷  н
   ʴ  .

  ࿡ н /etc/csh.cshrc Ͽ ִٸ rsh  ssh  Ʈ
  ӽſ ɾ ߵ tcsh csh ϴ  
   ȿϰ ȴ. ׷ bash sh Ѵٸ н ȿ
  ʴ.  н   /etc/environment-common  ϳ Ͽ
      ִµ,  Ͽ   ΰ

  ${EXPORT}PATH
  ${EQ}/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11:/usr/local/bin:/usr/games:.

    /etc/csh.login(tcsh  csh  ) set EQ=" " set
  EXPORT="setenv " source /etc/environment-common

  Ǵ /etc/profile (bash  ,  sh ȵ) EQ='='
  EXPORT="export " . /etc/environment-common

   /etc/environment (XDM  ) EQ="=" EXPORT="export " .
  /etc/environment-common Ͽ ̿  ϸ ų  ִ.

    ssh  쿡 /etc/environment (׸ EQ  EXPORT 
   Ͽ) ε鿡 ؼ Ұ̳  , 쿡
    ȴ. (,  bash ϴ rsh ɿ  
  ʴ´)

  15.  Acknowledgements

  Ari Mujunen  ̱   Ⱑ Ǿ, Juha Takala 
   ־.

