  PATH HOWTO
  Esa Turtiainen etu@dna.fi       :  gogoonee@bbs.para.co.kr
  v0.4, 15 November 1997

  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', 
'execl', 'setenv' ų info  'env' ׸     
ٶ.

  õ   ó ۵Ǵ  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 
'-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'  ɼ ̴. ׷ٸ /usr/local/bin   
 ִ ڴ  ýۿ ħ   ְ ȴ.

 н  丮 ''  Ǳ 캸°͵  
߿ϴ.  /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' α׷ ȣϵѴ. ׷ 
   ũ ִµΰ ( 
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  
 ־.
