Printing in Interix/Services for Unix 3.0
Interix Technical Note
Printing on an Interix system is handled through the lp command. This paper explains how to set up, test, share, and use printers in Interix.
On This Page
Printing in Interix
Printing on an Interix system is handled through the lp command. The lp command is a shell script that calls the Win32®-based command-line program, print.exe. If you can print a file using print.exe at an NT command prompt, you can print a file using lp.
Throughout this paper, we'll assume you're working with a printer with the share name "Crayon" on the printer "Scribbler".
To print files with the Interix lp command:
Set up the printer so that the Win32 print.exe command can print files.
Set the destination printer for lp, either by using the -d option to lp or by setting it as an environment variable.
Setting Up Your Printer
The first step is to ensure that your printer can print in the Win32 environment using the print.exe command.
Note: The instructions in this section are based on the Windows NT® 4.0 or Windows 2000 operating system. If it conflicts with the documentation for your system, follow your system documentation instead.
If the printer is attached to your machine or you are the system administrator responsible for installing the printer, read Setting Up A Printer.
If you're responsible for making the printer available to other machines on the network, read Sharing Your Printer.
If the printer is on another machine on the network and already prints, read Connecting to a Shared Printer.
Setting Up A Printer
To set up a printer that is attached to your machine, use the Add Printer Wizard accessible from the Control Panel.
You do not need to make this printer the default printer for your system, though you can if you want. The default printer for lp is determined by the value of the PRINTER or LPDEST environment variables in the Interix environment.
If other users on the network are also going to print using your printer, you will need to share the printer. See the instructions in the next section.
Sharing Your Printer
First, see if your printer is currently shared. From an NT console window, you can use the command net view \\machinename, where the machinename is the name of the computer connected to the printer. For example, to see which resources are shared by the machine "Scribbler":
net view \\Scribbler Share name Type Used as Comment -------------------------------------------------------- ADDRESS Disk CDROM Disk hp-5mp Print LPT1 HP LaserJet 5P/5MP The command completed successfully.
The type "Print" indicates a printer. If you don't see a printer, then the machine is not sharing the printer with the rest of the network.
To share a printer, you'll need the appropriate permissions.
Click the My Computer icon.
Open the Printers folder.
Select the printer, which has already been configured to work with Windows NT/Windows 2000.
Right-click the printer and select Properties.
Select the Sharing tab.
Click the Shared radio button.
Enter a share name for the printer in the "Share Name" field. For the example printer, enter "Crayon".
Connecting to a Shared Printer
If the printer is already shared from another computer, you simply need to set it up for your system.
Open the Network Neighborhood" and find the computer that shares the printer.
Find the computer that shares the printer and double-click on it.
Double-click on the Printers folder.
From the File menu, click Install.
Testing the Setup
To test, open a Windows NT/Windows 2000 console window (by selecting Start | Programs | Command Prompt), and try to print a file using the print.exe command. For example, to print the file testfile.txt using the printer connected to LPT1 on your machine:
C:\> print testfile.txt C:\testfile.txt is currently being printed
To print the file testfile.txt using the printer with the share-name crayon connected to the machine SCRIBBLER:
C:\> print /d:\\SCRIBBLER\crayon testfile.txt C:\testfile.txt is currently being printed
If you can print to a printer using a Win32-based application (such as Word), you should be able to print to that printer using print.exe.
Specifying a Printer
There are two ways to specify a printer with the lp command.
To specify the printer for a single command, use the -d option.
To specify the default printer, set the LPDEST environment variable or PRINTER environment variable.
The -d Option
The -d option to lp specifies the printer. Since the argument to -d is passed to the print.exe command, it has to be in UNC format, a form that print.exe understands, \\MACHINE\sharename. The backslashes must be escaped to prevent interpretation by the shell.
Both of these lp commands print the file testfile.txt on the printer with the UNC name \\SCRIBBLER\crayon:
lp -d \\\\SCRIBBLER\\crayon testfile.txt lp -d `\\SCRIBBLER\crayon' testfile.txt
If the printer is attached to your machine, you can instead specify the printing port:
lp -d lpt1: testfile.txt lp -d lpt2: testfile.txt
The Environment Variables
If no printer is specified on the command line, the lp command checks the value of the environment variable LPDEST. If LPDEST isn't set, the lp command uses the value of the environment variable PRINTER.
For our example, we'll assume you're setting LPDEST. This value is passed to print.exe, so it must be in UNC format, escaped for the shell.
In the KornShell, you can make crayon your default printer with this command:
In the C shell:
setenv PRINTER \\\\SCRIBBLER\\crayon
By default, the lp script uses the version of print.exe found in %WINDIR%/system32. If you need to specify an alternate version of print.exe, use the environment variable LP_PRINT. The pathname is in Interix format, not Win32 format.
For example, if the Win32 print.exe command you want to use is installed as D:\alternate\print32.exe, set the LP_PRINT environment variable with either of these commands:
export LP_PRINT=//D/alternate/print32.exe setenv LP_PRINT //D/alternate/print32.exe
Since the lp command is written specifically for the Windows NT/Windows 2000 print.exe command, this feature is only useful on systems where you have multiple versions of Windows NT or Windows 2000 installed.
Adjusting the Print Queue
To remove jobs from the print queue or to change priorities, open the Windows NT/Windows 2000 printer box for that printer.
From the Start menu, select Settings | Printers and then select the printer. (If you have only one printer active, you can also select the small printer icon near the clock in the task bar, which is displayed while the job is queued.)
To delete a job, select it in the display and press the Delete key.
Other Printing Services on Windows NT/Windows 2000
There are other printing services available on Windows NT/Windows 2000, but they do not work with the Interix lp program. They are intended to allow Windows NT– or Windows 2000–based machines to share printing services over a heterogeneous network. The other machines are presumed to be running an open systems operating system such as Linux, BSD, or SVR4.
A Win32 print spooler. The lpr command sends print jobs from your Windows NT– or Windows 2000–based machine to an open systems machine running a line
printer daemon (lpd). The Microsoft TCP/IP Printing service must
be installed before this will work.
A Win32-based program to view the status of a remote lpd queue.
A Windows NT/Windows 2000 service which prints jobs coming from a client on an open systems machine.
For More Information
For more information about Interix, see the Interix Web site at: