2

I installed a program that requires you to execute a python script like this:

python fit_locus.py --help

I want to make the file acessible to all users without requiring them to navigate to the folder of the python file, so they can execute said command from their home folders.

I tried adding the install folder to the PATH variable and tried to create a symlink of the file in /bin and /usr/bin but it didn't work.

Is it possible to do so or should I require the users to navigate to the folder where the program is installed?

EDIT: Here's my PATH variable:

Without the export:

/gasgano/bin:/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/usr/local/sbin:/‌​usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/esoreflex/bin:/‌​opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64

With the export:

/gasgano/bin:/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/usr/local/sbin:/‌​usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/esoreflex/bin:/‌​opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/opt/big-macs-calibrate/

And the path /opt/big-macs/calibrate/ is the one that contains the python script fit_locus.py

EDIT2:

On the installation instructions of the program I'm trying to make available to all users there's this little guide:

Set environmental variables:

1 - BIGMACS to the path of the installation directory

e.g.,

setenv BIGMACS /Users/ronald/big-macs-calibrate/ (tcsh shell)      
BIGMACS=/Users/ronald/big-macs-calibrate/ (bash shell)
export BIGMACS

2 - add installation directory to PYTHONPATH

e.g.,

setenv PYTHONPATH $BIGMACS:PYTHONPATH (tcsh shell)
PYTHONPATH=$BIGMACS:PYTHONPATH
export PYTHONPATH

But it doesn't work either. The error I get when I try to run python fit_locus.py --helpis:

python: can't open file 'fit_locus.py': [Errno 2] No such file or directory
7
  • Please post your PATH variable
    – Rahul
    May 5, 2016 at 12:20
  • Without the export: /gasgano/bin:/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/esoreflex/bin:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64
    – JefersonFG
    May 5, 2016 at 12:22
  • With the export: /gasgano/bin:/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/esoreflex/bin:/opt/intel/composer_xe_2011_sp1.9.293/mpirt/bin/intel64:/opt/big-macs-calibrate/
    – JefersonFG
    May 5, 2016 at 12:23
  • /opt/big-macs/calibrate/ contains the python script fit_locus.py
    – JefersonFG
    May 5, 2016 at 12:23
  • Don't post it as comment, edit here
    – Rahul
    May 5, 2016 at 12:24

2 Answers 2

3

To make something like this easily executable, add this as the first line of the python script:

#! /usr/bin/python

and the file itself should be executable; that is, the x bits must be set, chmod +x fit_locus.py.

Since the script is in the amended PATH, users can just enter the name. For simplicity, you can remove the '.py' so users only need to type

fit_locus --help

unless there's a reason you want the users to be aware that it's a python script.

5
  • 1
    !#/usr/bin/env python can also be used, in case the python executable doesn't reside in /usr/bin
    – Joe
    May 5, 2016 at 20:50
  • Neither worked out. I added the line you mentioned in the start of the script, used chmod +x, exported the PATH and tried to execute the file and it says "fit_locus: command not found"
    – JefersonFG
    May 6, 2016 at 12:33
  • Here's the output: root@astrolab15:~# vim /opt/big-macs-calibrate/fit_locus.py root@astrolab15:~# chmod +x /opt/big-macs-calibrate/fit_locus.py root@astrolab15:~# export PATH=$PATH:/opt/big-macs-calibrate/ root@astrolab15:~# fit_locus --help fit_locus: command not found
    – JefersonFG
    May 6, 2016 at 12:33
  • Ah! I was unclear. You have to remove the .py suffix by renaming the file, removing it from both the filename and what the user types. Right now, the user should be able to type fit_locus.py --help, but after you mv fit_locus.py fit_locus then the shell will find it. May 6, 2016 at 13:24
  • Still didn't work, same error as before (command not found)
    – JefersonFG
    May 16, 2016 at 19:47
0

An alternate way is to create a desktop launcher. That could specify the exact path to the file. The launcher could then be copied to each user's desktop. Another approach is a smaller starter script to go into each user's home folder. But then you have to use ./, ~/, or $HOME/ before the script name to launch it.

However, you can add folders to either the head or tail end of $PATH for each user if you modify the .bashrc or the .profile for each user. This is a permanent change that takes effect each time they log in. So there are options.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .