每当我打开.sh文件时,它都会在gedit中而不是在终端中打开它。我找不到类似于“右键单击”→“打开方式”→“其他应用程序...”→“终端”的任何选项。

如何在终端中打开此文件?

评论

该脚本是否旨在设置环境变量以供进一步使用?

您不应该在脚本上使用扩展名。在将来的某个时候,您可能会发现另一种语言更适合执行当前脚本正在执行的任务。然后你有一个问题。您是保留旧名称,还是使用完全误导性的扩展名,还是要重命名它,可能不得不在许多使用脚本的地方进行编辑?

您不需要文件扩展名。拥有它很高兴,但不是必需的。操作系统不查看文件扩展名。它查看数据

恩,如果您用ruby重写foo.sh,则始终可以使用.sh文件启动ruby foo.rb

在Dolphin中,您可以按F4键,然后会打开一个控制台。

#1 楼

授予脚本执行权限:

chmod +x /path/to/yourscript.sh


并运行脚本:

/path/to/yourscript.sh


因为.是指到当前目录:如果yourscript.sh在当前目录中,则可以将其简化为:

./yourscript.sh


评论


+1仅答案以显示仅通过终端方式添加执行权限。

–冰雹
2011年5月1日下午3:24

如果您执行bash /path/to/yourscript.sh,则不需要chmod + x

–亚历山大·列夫丘克(Aleksandr Levchuk)
2011年5月1日下午4:51

实际上,您可以使用。 /path/to/yourscript.sh(如果脚本必须设置一些环境变量)。

–Rob
2011年5月1日上午10:46

没有人提到传统的:./ path / to / yourscript.sh(。之后没有空格)?我发现一个是最简单,最容易使用的...但是无论如何,这是我的选择,它应该与./几乎一样,尽管我不明白为什么不使用./:(FILENAME = 〜/ rem4space.sh; SLL = $(cat $ FILENAME | head -1 | sed's:^#!\(。* \):\ 1:g'); [!-z $ SLL] && exec $ SLL $ FILENAME; sh $ FILENAME)...根据自己的喜好编辑FILENAME。另请注意,如果没有其他选择,将使用sh。

– MiJyn
2013年6月19日在3:50



#2 楼

您需要将Shell脚本标记为可执行文件,以便从文件管理器中运行它们:



右键单击.sh文件并选择Properties:




在“权限”选项卡中,选中“允许将文件作为程序执行”:




关闭属性窗口并双击该文件。将弹出一个对话框,为您提供在终端中运行脚本的选项:





评论


这在Ubuntu 13.04中不起作用。无论如何都保持打开状态,从不要求我执行。编辑:Nvm,imjustmatthew回答了这个问题。

– mpen
13年7月12日在16:27



在使用此功能之前,我们需要使文件具有使用chmod执行的权限。 chmod + x filename.sh或chmod 755 filename.sh

– Arvind Rawat
17年3月16日在15:11



我没有弹出窗口! IDE立即打开,而不是弹出窗口

–绿色
18年4月4日在10:56

为什么在界面的任何地方都找不到“在终端中运行”? (Ubuntu 18.04)

–丹尼尔·莫勒(DanielMöller)
18年5月9日在22:08

@DanielMöller,这是您问题的答案。 askubuntu.com/questions/38661/how-do-i-run-sh-files / ...

–阿赫里什·达尔·杜比(Akhilesh Dhar Dubey)
18年8月16日在10:19



#3 楼

打开终端,然后导航到.sh文件所在的文件夹。然后输入:

sh <name of file>.sh


评论


打开任何应用程序的最佳方法。导航到.sh目录,然后在命令提示符下将其打开。如果需要权限,请使用sh <如上所示的文件名> .sh,请使用chmod + x /path/to/yourscript.sh或右键单击并更改所有权限

– Durgesh Kumar
19年3月19日在9:23

这是我最喜欢的方法。 @DurgeshKumar不错的提示。

–wlwl2
20 Jan 6 '20在10:40



试图在高山上运行sh脚本。尽管其他答案无效,但确实有效。

– Vankog
20-10-9在11:32

#4 楼

先决条件

在运行.sh文件之前,需要将其设置为可执行文件:


右键单击文件
选择属性

选择权限

选择“允许将文件作为程序执行”


警告

请确保您信任您从中获取文件的来源。可能是病毒。

非常简单的方法


双击文件
单击在终端中运行

这有问题。终端将立即关闭,您将看不到输出。

简单方法


打开应用程序->附件->终端
将.sh文件拖放到终端中,然后按Enter

专业人员的操作方式


打开应用程序->附件->终端

查找.sh文件的位置


使用lscd命令

ls将列出当前文件夹中的文件和文件夹。试试看:键入“ ls”,然后按Enter。
一旦看到要进入的文件夹,请运行cd,后跟一个空格,然后是文件夹名称。
放入您不想要的文件夹中,运行cd ..向上升级




运行.sh文件



一旦看到带有script1.shls,请运行以下命令:

./script.sh





为什么

终端具有丰富的功能强大的工具集,可通过键入命令来访问。专业人士通过输入lscd来找到.sh文件。进入正确的当前文件夹后,您可以运行以下脚本:

./script1.sh


,也可以运行并将输出重定向到文件:

./script1.sh > out.txt


,也可以过滤关键字(例如“苹果”)的输出,然后重定向到文件:

./script1.sh | grep apples > ./only-apples


只需输入一些命令,您就可以对该文件执行成千上万的操作。

另一条命令,您可以使用一个简单的命令从Internet下载文件:

wget www.google.com/images/logos/ps_logo2.png


,然后像这样打开文件:

shotwell ps_logo2.png


评论


我不确定专家的操作方式是否正确,更多的是简单的高级(用于控制输出)方式

–冰雹
2011年5月1日下午4:24

很高兴知道我是如何在专业人员的第一次审判中做到这一点的。我认为这是基本用户的方式。

–NelsonGon
19年6月11日在5:06

#5 楼

在Ubuntu 13.04上,Nautilus中打开的可执行文件现在默认情况下在gedit中打开,而不是提示用户执行它们。要启用经典行为,您需要调整首选项:

Nautilus→编辑菜单→首选项→行为选项卡→每次单击询问附近的单选按钮。

评论


提出问题的人正在谈论Ubuntu 10.10

– edwin
13年6月11日,0:48

谢谢!!!我不知道他们为什么要改变这一点,不知道如何执行任何事情。

– mpen
13年7月12日在16:28

这是最新的Ubuntu的正确答案。

–gaRex
15年4月11日在11:44

您如何在15.10到达鹦鹉螺?

– Yaakov Ainspan
16年5月23日在17:54

从Ubuntu 18.04开始,您可以通过以下方式访问首选项:打开目录,然后单击顶部栏中的“文件->首选项”。

–tparker
18年11月17日在20:04

#6 楼

使用.sh转到cd文件所在的目录。在此示例中,我将sh文件存储为~/Desktop/shell_practice/test.sh

首先执行pwd来确定您的位置,如果它返回/home/username(其中username是您的真实用户名),则可以运行

cd Desktop/shell/practice


如果您似乎在其他地方,则可以使用绝对路径

cd ~/Desktop/shell/practice




cd $HOME/Desktop/shell/practice


甚至

cd /home/$USER/Desktop/shell/practice


这些都是描述同一地点的所有方法。将其定位到脚本位置后,键入

ls


如果在输出中可以看到sh文件,则可以使用chmod使其可执行。就我而言,请记住文件名是test.sh,因此我将运行

chmod u+x test.sh


现在我们与脚本位于同一目录,我们必须指定我们要通过给出文件位置./(当前目录后跟路径分隔符,以将其与文件名区分开)执行该文件的外壳程序。要运行我的文件,请输入:

./test.sh


如果脚本编写正确,它将在没有错误的情况下运行...

这是一个实时示例:


评论


这对我来说可以在ubuntu上安装Netbeans

– RuD3B0y
18年1月6日在20:16

Wb,@ RuD3B0y,我尝试为菜鸟们保留最佳答案,没有高科技内容,如果您进行一些编辑,欢迎您。

–驱魔人
18年4月2日在17:58

#7 楼

有几种方法可以执行此操作。

选项1



在终端中,使用cd(访问Bash文件所在的目录(更改目录)。

例如。 cd Downloads


运行bash <filename>.sh

这也适用于.run文件。在此网页上有一个有关更新Rhythmbox的用法示例。


选项2


在终端中,导航到bash目录文件已插入。
运行chmod +x <filename>.sh
在Nautilus中打开文件。


#8 楼

对于Ubuntu 18.04,需要进行一些修改,因为您不会看到弹出对话框。

所以您需要做的是:

右键单击“文件” ,请在“可执行文件”文本文件下选择“首选项”>“选择行为选项卡”>“标记要执行的操作”选项。可以选择“在终端中运行”选项来运行.sh文件。



评论


有点奇怪,因为我在右键菜单中没有“首选项”选项。我只有物业。

–尼古拉斯·汉弗莱(Nicholas Humphrey)
20/09/11在11:53

对我而言,这也要求其他完全不相关的扩展,这确实是一个阻力。无论如何,仅要求它以.sh扩展名结尾。

– Kvothe
20年12月3日,16:45

#9 楼

2个主要步骤。


在终端中,使用gedit编写并将带有“ .sh”扩展名的脚本保存到桌面。
(但是可以使用任何文本编辑器)

打开Nautilus,然后右键单击script.sh文件。


在属性下,选中Nautilus菜单中的“允许执行文件..”框。文件,然后进行首选项,然后进行行为
检查“在打开时运行可执行文本文件”。



现在,当您双击文件时,桌面,它应该执行。
不需要../

#10 楼


右键单击.sh文件并使其可执行。
打开一个终端(Ctrl + Alt + T)。
.sh文件拖放到终端窗口中,敬畏地观看。


评论


欢迎来到Ask Ubuntu!我建议编辑此答案以将其扩展为有关如何执行第一步的特定详细信息。 (另请参阅如何写一个好的答案?有关在AskUbuntu上认为哪种答案最有价值的一般建议。)

–大卫·福斯特(David Foerster)
17年6月10日在15:49

#11 楼

在Ubuntu 16.04中,这是如何在终端中打开它的方法:

转到File Manager > Edit > Preferences > Behavior以选择Executable Text Files,然后选择Ask each time

问题是默认情况下它设置为View Executable Files when they are opened

#12 楼

如果将您的Shell脚本或其他可执行文件放置在/ usr / local / bin中,则会在无需在命令行中提供文件夹路径或在名称中添加./的情况下找到并执行它们。例如,我创建了以下简单的3行bash脚本来显示磁盘UUID:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid


我调用了文件uuid并将其放在/ usr / local / bin中。我需要在命令行上输入的是:

uuid


#13 楼

好吧,我也面临着同样的问题。我想执行.sh文件,并在CentOS 7上用Gedit打开了它。所以这就是我所做的:


我导航到要执行的.sh文件的路径。
我打开了终端。
我只需将其拖放到终端窗口中,它会自动将该文件以及路径作为输入。
按Enter键,您就可以开始了!


#14 楼

我在一些发行版中发现的问题是它们在Nautilus中隐藏了preferences选项,但是使用Gnome3在Ubuntu和其他发行版中对其进行修复是相同的(实际上只是完成了Fedora版本,并发布了实际的修复提醒我)将来如何)。



安装dconf-editor

sudo apt-get install dconf-editor



使用用户运行dconf-editor您想在其上使用的帐户,即不是root

dconf-editor



导航到以下架构:

org.gnome.nautilus。首选项


将默认选项更改为默认情况下不打开:

找到executable-text-activation单击单词display并更改为ask


,您可以选择编辑,查看或运行以后的文件

#15 楼

我是Linux的菜鸟,但我遇到了同样的问题。如果所有其他方法均失败:


打开终端
打开包含.sh文件的文件夹
将文件拖放到终端窗口中
文件的路径出现在终端中。按Enter键。
Voila,您的.sh文件将运行。


#16 楼

您还可以使用.技巧,并建议其他答案。

例如:

chmod +x filename.sh,假设您已经转到文件的路径,然后使用以下任一命令:

sh filename.sh

./filename.sh

. filename.sh


评论


警告:这三个命令不等效。如果您的shebang引用了其他二进制文件(例如Stack),则第三个命令将尝试使用Bash解析参数,这将失败。

–詹·托马斯(Jezen Thomas)
17年2月18日在11:12