如何给Linux中的所有Python脚本赋予可执行权限?
How to give executable permission to all Python scripts in Linux?
假设我有一个名为 a.py 的 python 脚本,如下所示:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author : Bhishan Poudel
# Date : Jul 13, 2016
# Imports
# Script
print("hello")
我可以 运行 这个脚本有两种方式:
使用 python 解释器:
python3 a.py
更改权限
chmod a+x a.py; ./a.py
问题
我怎样才能 运行 任何新的或旧的 python 脚本而不总是使用 chmod a+x script_name
。
我对我的计算机有 root 访问权限和用户访问权限。
基本上我想要所有 .py 文件的可执行权限,我们该怎么做?
我尝试了不同的 shebang,例如:
#!/usr/bin/python3
#!/usr/bin/env python3
#!/usr/local/bin/python3
#!/usr/local/bin/env python3
python 解释器也在 $PATH 中。
echo $PATH 的输出如下:
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Users/poudel/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/
另外,ls /usr/bin/py* 有:
/usr/bin/pydoc* /usr/bin/python2.5@ /usr/bin/pythonw*
/usr/bin/pydoc2.5@ /usr/bin/python2.5-config@ /usr/bin/pythonw2.5@
/usr/bin/pydoc2.6@ /usr/bin/python2.6@ /usr/bin/pythonw2.6@
/usr/bin/pydoc2.7@ /usr/bin/python2.6-config@ /usr/bin/pythonw2.7@
/usr/bin/python* /usr/bin/python2.7@
/usr/bin/python-config* /usr/bin/python2.7-config@
相关链接:
http://effbot.org/pyfaq/how-do-i-make-a-python-script-executable-on-unix.htm
Permission Denied when executing python file in linux
bash permission denied for python
Permission denied when launch python script via bash
艰难的道路
运行 以下具有 root 权限:
find /your/path/ -type f -name "*.py" -exec chmod u+x {} \;
注:
如果您是 .py
文件的所有者,chmod
不需要 运行 作为 root。
聪明的方法
写一个脚本来解决这个问题。
#!/bin/bash
if [ -f "" ]
then
geany "" # You could also use xdg-open if you set geany to open .py files
else
cp /path/to/python/startup/template "" # You may omit this if you don't have a default template
chmod u+x ""
geany ""
fi
将脚本另存为 pycreator
in say /usr/bin/
,然后执行
chown root:root /usr/bin/pycreator
chmod +x-w /usr/bin/pycreator
要使用 pycreator
创建新脚本,请执行
pycreator calculator.py
另外 [ this ] answer pointed to by @choroba 在他的评论中提供了这方面的宝贵见解。
使用@sjsam 的想法,
我做了以下操作:
假设我在任何位置都有一个文件 hello.py。
cd to that location
find $PWD -type f -name "*.py" -exec chmod u+x {} \;
./hello.py
# Now, i can create any number of .py files in that folder and run ./filename
# Note: if we are running as user permission, and also have sudo access,
we can also do:
sudo -H find $PWD -type f -name "*.py" -exec chmod u+x {} \;
We should not use sudo unless absolutely necessary.
感谢 sjsam。
只需在终端中输入此命令即可。
sudo su
试试这个 chmod +x *.py 它适用于我的电脑(OS:Ubuntu 20.4),我也在使用 #! /usr/bin/env python3 shebang
假设我有一个名为 a.py 的 python 脚本,如下所示:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author : Bhishan Poudel
# Date : Jul 13, 2016
# Imports
# Script
print("hello")
我可以 运行 这个脚本有两种方式:
使用 python 解释器:
python3 a.py
更改权限
chmod a+x a.py; ./a.py
问题
我怎样才能 运行 任何新的或旧的 python 脚本而不总是使用 chmod a+x script_name
。
我对我的计算机有 root 访问权限和用户访问权限。
基本上我想要所有 .py 文件的可执行权限,我们该怎么做?
我尝试了不同的 shebang,例如:
#!/usr/bin/python3
#!/usr/bin/env python3
#!/usr/local/bin/python3
#!/usr/local/bin/env python3
python 解释器也在 $PATH 中。 echo $PATH 的输出如下:
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Users/poudel/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/:/opt/local/bin:/Users/poudel/phosim:/Users/poudel/Applications:/usr/local/octave/3.8.0/bin:/Applications/Geany.app/Contents/MacOS/
另外,ls /usr/bin/py* 有:
/usr/bin/pydoc* /usr/bin/python2.5@ /usr/bin/pythonw*
/usr/bin/pydoc2.5@ /usr/bin/python2.5-config@ /usr/bin/pythonw2.5@
/usr/bin/pydoc2.6@ /usr/bin/python2.6@ /usr/bin/pythonw2.6@
/usr/bin/pydoc2.7@ /usr/bin/python2.6-config@ /usr/bin/pythonw2.7@
/usr/bin/python* /usr/bin/python2.7@
/usr/bin/python-config* /usr/bin/python2.7-config@
相关链接:
http://effbot.org/pyfaq/how-do-i-make-a-python-script-executable-on-unix.htm
Permission Denied when executing python file in linux
bash permission denied for python
Permission denied when launch python script via bash
艰难的道路
运行 以下具有 root 权限:
find /your/path/ -type f -name "*.py" -exec chmod u+x {} \;
注:
如果您是.py
文件的所有者,chmod
不需要 运行 作为 root。
聪明的方法
写一个脚本来解决这个问题。
#!/bin/bash
if [ -f "" ]
then
geany "" # You could also use xdg-open if you set geany to open .py files
else
cp /path/to/python/startup/template "" # You may omit this if you don't have a default template
chmod u+x ""
geany ""
fi
将脚本另存为 pycreator
in say /usr/bin/
,然后执行
chown root:root /usr/bin/pycreator
chmod +x-w /usr/bin/pycreator
要使用 pycreator
创建新脚本,请执行
pycreator calculator.py
另外 [ this ] answer pointed to by @choroba 在他的评论中提供了这方面的宝贵见解。
使用@sjsam 的想法, 我做了以下操作:
假设我在任何位置都有一个文件 hello.py。
cd to that location
find $PWD -type f -name "*.py" -exec chmod u+x {} \;
./hello.py
# Now, i can create any number of .py files in that folder and run ./filename
# Note: if we are running as user permission, and also have sudo access,
we can also do:
sudo -H find $PWD -type f -name "*.py" -exec chmod u+x {} \;
We should not use sudo unless absolutely necessary.
感谢 sjsam。
只需在终端中输入此命令即可。
sudo su
试试这个 chmod +x *.py 它适用于我的电脑(OS:Ubuntu 20.4),我也在使用 #! /usr/bin/env python3 shebang