[OS X TeX] If you have...

Peter Dyballa Peter_Dyballa at Web.DE
Fri Mar 6 13:11:30 EST 2009


Am 06.03.2009 um 16:42 schrieb Herbert Schulz:

> In all cases I need to know which shell you use as well as the full  
> file path (~ for HOME) and contents added to the file.


Herb,

the shell plays no roll. The install scripts take care for this, the  
(t)csh, and also the other, the (ba,z)sh, flavour.

And it's not so hard to gain exact information. Fetching the install  
images you can find inside (Apple or Mac OS X) install packages.  
Charles Srstka's shareware Pacifist (http://www.charlessoft.com/)  
allows, as if you were on the command line, to look into the PKG file  
and see all its components. Well, some UNIX understanding is needed  
now to get an idea of how the installation process might work, which  
script probably ("postflight") will be used, so in short:

	Fink does not alter any non-Fink or user file.

Fink instead recommends in a detailed way to its user to take one or  
two steps to set up its environment. See here: http:// 
www.finkproject.org/doc/users-guide/install.php?phpLang=en#setup.

There is an application inside the Fink installation image,  
pathsetup. If the user chooses to use this application to update his  
or her environment, the application decides on the kind of login  
shell which files in which sequence will be altered:

   for (t)csh:
     1. ~/.tcshrc
     2. ~/.cshrc

   for bash:
     1. ~/.bash_profile
     2. ~/.bash_login
     3. ~/.profile

If none of these files exists, for (t)csh the file ~/.cshrc is  
created, for a bash the file ~/.profile.

In the case of (t)csh the line

	test -r /sw/bin/init.csh && source /sw/bin/init.csh

and in the case of bash the line

	test -r /sw/bin/init.sh && . /sw/bin/init.sh

is appended to the found RC file. Users of any other shell (zsh, ksh,  
ash, rc, es, ...) won't receive Fink support (I think users of *sh  
can easily use the bash line addition).


MacPorts (http://trac.macports.org/wiki) claims in the (English)  
ReadMe.rtf inside the disk image:

	A file named ~/.profile is created for the "bash" shell (default on  
Mac OS X 10.3 and newer) during the MacPorts installation. It  
contains the necessary statements to append MacPorts' binary paths  
within /opt/local/ to your shell environment, so MacPorts is  
available to you on subsequent terminal sessions. You may have to  
quit and restart your terminal application for this change to take  
effect.

Actually it's not completely true: for me tcsh user a file ~/.tcshrc  
was created. The user of a csh, sh, zsh, ksh, or any other shell (rc,  
es, ash, ...) as login shell will not get MacPorts "support," i.e.,  
they will have set up their environment manually (again, for *sh  
shells the bash lines can be used). (The way to determine the user's  
login shell is quite clever and exact: dscl . -read /users/${USER}  
shell | awk -F'/' '{print $NF}'.)

In case of tcsh MacPorts appends these lines

	# MacPorts Installer addition on YYYY-MM-DD_at_HH:MM:SS: adding an  
appropriate PATH variable for use with MacPorts.
	setenv PATH /opt/local/bin:/opt/local/sbin:$PATH
	# Finished adapting your PATH environment variable for use with  
MacPorts.
	
	
	# MacPorts Installer addition on YYYY-MM-DD_at_HH:MM:SS: adding an  
appropriate DISPLAY variable for use with MacPorts.
	setenv DISPLAY :0
	# Finished adapting your DISPLAY environment variable for use with  
MacPorts.

to an existing or newly created ~/.tcshrc file and in case of bash it  
might be:

	# MacPorts Installer addition on YYYY-MM-DD_at_HH:MM:SS: adding an  
appropriate PATH variable for use with MacPorts.
	export PATH=/opt/local/bin:/opt/local/sbin:$PATH
	# Finished adapting your PATH environment variable for use with  
MacPorts.
	
	
	# MacPorts Installer addition on YYYY-MM-DD_at_HH:MM:SS: adding an  
appropriate DISPLAY variable for use with MacPorts.
	export DISPLAY=:0
	# Finished adapting your DISPLAY environment variable for use with  
MacPorts.

which is appended to ~/.profile. (I do miss MANPATH in both!) The  
function write_setting() which does the update is this one:

     echo -e "\n# ${OUR_STRING}: adding an appropriate ${1} variable  
for use with MacPorts." >> ${HOME}/.${CONF_FILE}
     echo "${ENV_COMMAND} ${1}${ASSIGN}${2}" >> ${HOME}/.$ 
{CONF_FILE}    echo -e "# Finished adapting your ${1} environment  
variable for use with MacPorts.\n" >> ${HOME}/.${CONF_FILE}
     chown ${USER} ${HOME}/.${CONF_FILE} || echo "Warning: unable to  
adapt permissions on your ${HOME}/.${CONF_FILE} shell configuration  
file!"
     echo "An appropriate ${1} variable has been added to your shell  
environment by the MacPorts installer."

which is invoked as

	write_setting PATH "${BINPATH}:${SBINPATH}:\$PATH"

and ENV_COMMAND, ASSIGN, and CONF_FILE set for each of the two cases.

So MacPorts changes at once the user's environment. Both, MacPorts  
and Fink, are less invasive then any of the Mac specific TeX  
distributions which all dare to alter the whole system.


Since the Fink and MacPorts settings come last, they override  
previous values of PATH. So if a TeX Live and Fink user invokes in  
the standard install environment tex or latex, it will be Fink's  
teTeX 3 which will be used. This situation can be changed in the  
altered login shell RC file and/or by invoking

	env PATH=<path to TeX Live's binaries directory:$PATH latex ...

or

	env PATH=/sw/bin:$PATH latex ...

to use either TeX Live or teTeX.

--
Greetings

   Pete

We have to expect it, otherwise we would be surprised.






More information about the MacOSX-TeX mailing list