Làm cách nào để chạy tập lệnh .sh?


344

Bất cứ khi nào tôi mở tệp .sh, nó sẽ mở nó trong gedit thay vì thiết bị đầu cuối. Tôi không thể tìm thấy bất kỳ tùy chọn nào tương tự như Nhấp chuột phảiMở bằngỨng dụng khác ...Thiết bị đầu cuối .

Làm thế nào để tôi mở tập tin này trong thiết bị đầu cuối?


Liệu kịch bản đó nhằm mục đích thiết lập các biến env để sử dụng tiếp?
Cướp

1
Bạn không nên sử dụng tiện ích mở rộng trên tập lệnh. Tại một số thời điểm trong tương lai, bạn có thể thấy rằng một ngôn ngữ khác phù hợp hơn để thực hiện nhiệm vụ mà kịch bản hiện tại của bạn đang thực hiện. Và sau đó bạn có một vấn đề. Bạn có giữ tên cũ, với một phần mở rộng hoàn toàn sai lệch, hoặc bạn đổi tên nó, có thể phải chỉnh sửa rất nhiều nơi sử dụng tập lệnh của bạn?
geirha

Bạn không cần phần mở rộng tập tin. Thật tốt khi có nhưng không cần thiết. HĐH không nhìn vào phần mở rộng tập tin. Nó nhìn vào dữ liệu
ActionParsnip

5
Meh, nếu bạn viết lại foo.sh trong ruby, bạn luôn có thể sử dụng các file sh để khởi độngruby foo.rb
glenn jackman

Trong Cá heo, bạn có thể nhấn F4 và bảng điều khiển mở ra
Motte001

Câu trả lời:


523

Cấp quyền thực thi cho tập lệnh của bạn:

chmod +x /path/to/yourscript.sh

Và để chạy tập lệnh của bạn:

/path/to/yourscript.sh

.đề cập đến thư mục hiện tại: if yourscript.shnằm trong thư mục hiện tại, bạn có thể đơn giản hóa việc này thành:

./yourscript.sh

13
+1 chỉ trả lời để hiển thị thêm quyền thực thi theo cách duy nhất.
Hailwood

83
Nếu bạn làm thế bash /path/to/yourscript.shthì bạn không cầnchmod +x
Aleksandr Levchuk

4
Trên thực tế, bạn có thể sử dụng . /path/to/yourscript.shnếu tập lệnh phải thiết lập một số biến môi trường.
Cướp

1
Không ai đề cập đến truyền thống: ./path/to/yourscript.sh(không có không gian sau .)? Tôi thấy rằng một trong những cách đơn giản và dễ sử dụng nhất ... Nhưng dù sao, đây là cách thay thế của tôi sẽ làm gần giống như ./vậy, mặc dù tôi không hiểu tại sao bạn sẽ không sử dụng ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... chỉnh sửa FILENAMEtheo ý thích của bạn . Cũng lưu ý rằng shsẽ được sử dụng nếu không có sự thay thế.
MiJyn

88

Bạn cần đánh dấu các kịch bản shell là có thể thực thi để chạy chúng từ trình quản lý tệp:

  1. Nhấp chuột phải vào .shtệp của bạn và chọn Thuộc tính :

    nhập mô tả hình ảnh ở đây

  2. Trong tab Quyền , kiểm tra Cho phép thực thi tệp dưới dạng chương trình :

    nhập mô tả hình ảnh ở đây

  3. Đóng cửa sổ Thuộc tính và bấm đúp vào tệp. Một hộp thoại sẽ bật lên cung cấp cho bạn tùy chọn để chạy tập lệnh trong một thiết bị đầu cuối:

    nhập mô tả hình ảnh ở đây


10
Điều này không hoạt động trong Ubuntu 13.04. Tiếp tục mở trong gedit, không bao giờ yêu cầu tôi thực hiện. Chỉnh sửa: Nvm, imjustmatthew trả lời này.
mở

Trước khi sử dụng, chúng ta cần tạo quyền cho tệp để thực thi bằng chmod. chmod + x filename.sh hoặc chmod 755 filename.sh
Arvind Rawat

Tôi không có cửa sổ bật lên! IDE được mở ngay lập tức, không phải cửa sổ bật lên
Green

Tại sao tôi không thể tìm thấy "chạy trong thiết bị đầu cuối" ở bất cứ đâu trên giao diện của mình? (Ubuntu 18.04)
Daniel Möller

1
@ DanielMöller, đây là câu trả lời cho câu hỏi của bạn. askubuntu.com/questions/38661/how-do-i-run-sh-files/...
Akhilesh Dhar Dubey

33

Mở một thiết bị đầu cuối và điều hướng đến thư mục chứa .shtập tin. Sau đó gõ:

sh <name of file>.sh

cách tốt nhất để mở bất kỳ ứng dụng. Điều hướng đến thư mục .sh sau đó mở nó trong dấu nhắc lệnh. việc sử dụng sh <tên của tệp như được hiển thị ở trên> .sh nếu nó yêu cầu quyền sử dụng chmod + x /path/to/yourscript.sh hoặc nhấp chuột phải và thay đổi quyền cho tất cả
Durgesh Kumar

24

Điều kiện tiên quyết

Trước khi bạn có thể chạy tệp .sh, bạn cần phải thực hiện nó:

  1. Nhấp chuột phải vào tập tin
  2. Chọn thuộc tính
  3. Chọn Quyền
  4. Chọn Cho phép thực thi tệp dưới dạng chương trình

Cảnh báo

Hãy chắc chắn rằng bạn tin tưởng nguồn nơi bạn nhận được tệp. Nó có thể là một virus .

Cách rất đơn giản

  1. Nhấp đúp chuột vào tập tin
  2. Bấm chạy trong thiết bị đầu cuối

Điều này có vấn đề. Thiết bị đầu cuối sẽ đóng ngay lập tức và bạn sẽ không thể nhìn thấy đầu ra.

Cách đơn giản

  1. Mở ứng dụng -> Phụ kiện -> Thiết bị đầu cuối
  2. Kéo và thả tệp .sh vào thiết bị đầu cuối và nhấn Enter

Cách các chuyên gia làm điều đó

  1. Mở ứng dụng -> Phụ kiện -> Thiết bị đầu cuối
  2. Tìm nơi tệp .sh

    • Sử dụng các lệnh lscd
    • lssẽ liệt kê các tập tin và thư mục trong thư mục hiện tại . Hãy dùng thử: gõ "ls" và nhấn Enter.
    • Khi bạn thấy thư mục mà bạn muốn truy cập, hãy chạy cd, theo sau là khoảng trắng, theo sau là tên thư mục
    • Nếu bạn khi vào một thư mục mà bạn không muốn, hãy chạy cd ..đi một bậc lên
  3. Chạy tệp .sh

    • Một khi bạn có thể thấy ví dụ script1.shvới lschạy này:

      ./script.sh

Tại sao làm điều đó một cách phức tạp?

Thiết bị đầu cuối có một bộ công cụ mạnh mẽ phong phú có thể truy cập bằng cách gõ các lệnh. Chuyên gia định vị tệp .sh bằng cách gõ lscd. Khi bạn đang ở trong thư mục hiện tại chính xác, bạn có thể chạy tập lệnh như thế này:

./script1.sh

hoặc bạn có thể chạy và chuyển hướng đầu ra thành một tệp:

./script1.sh > out.txt

hoặc bạn có thể lọc đầu ra cho các từ khóa (ví dụ: "táo") rồi chuyển hướng đến một tệp:

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

Có hàng ngàn thứ bạn có thể vào tệp đó chỉ bằng cách gõ một vài lệnh.

Một số khác, bạn có thể tải xuống một tệp từ Internet bằng một lệnh đơn giản:

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

Và sau đó mở tệp như thế này:

shotwell ps_logo2.png

6
Im không chắc chắn rằng các chuyên gia cách làm điều đó là đúng, nó nhiều hơn một trường hợp cách đơn giản các tiên tiến (ví để kiểm soát đầu ra) cách
Hailwood

Thật tốt khi biết tôi đã làm theo cách mà các chuyên gia thực hiện trong thử nghiệm đầu tiên của tôi. Tôi nghĩ đó là cách cơ bản của người dùng.
NelsonGon

19

Trên Ubuntu 13.04, các tệp thực thi được mở trong Nautilus hiện được mở trong gedit theo mặc định thay vì nhắc người dùng thực thi chúng. Để kích hoạt hành vi cổ điển, bạn cần điều chỉnh tùy chọn:

Nautilus → Chỉnh sửa menu → Tùy chọn → Tab Hành vi → Nhấp vào nút radio gần Hỏi mỗi lần.


Người đặt câu hỏi đang nói về Ubuntu 10.10
edwin

1
Cảm ơn bạn!!! Tôi không biết tại sao họ lại thay đổi điều này, không thể tìm ra cách thực hiện bất cứ điều gì.
mở

1
Đây là câu trả lời đúng cho ubuntus mới nhất.
gaRex

Làm thế nào để bạn đến Nautilus trong 15.10?
Yaakov Ainspan

Kể từ Ubuntu 18.04, bạn có thể truy cập các tùy chọn bằng cách mở một thư mục và sau đó nhấp vào "Tệp -> Tùy chọn" ở thanh trên cùng.
tparker

7

Chuyển đến thư mục chứa .shtập tin cd. Trong ví dụ này tôi đã lưu trữ shtệp của mình dưới dạng~/Desktop/shell_practice/test.sh

trước tiên hãy làm pwdđể biết bạn đang ở đâu và nếu nó trở lại /home/username( usernametên người dùng thực sự của bạn), bạn có thể chạy

cd Desktop/shell/practice

Nếu bạn dường như ở một nơi khác, bạn có thể sử dụng đường dẫn tuyệt đối

cd ~/Desktop/shell/practice

hoặc là

cd $HOME/Desktop/shell/practice

hoặc thậm chí

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

đây là tất cả các cách mô tả cùng một nơi. Khi bạn đã đặt nó vào vị trí của tập lệnh của bạn, hãy nhập

ls

Nếu bạn có thể thấy shtệp trong đầu ra, bạn có thể sử dụng chmodđể làm cho nó có thể thực thi được. Trong trường hợp của tôi, hãy nhớ rằng, tên tệp là test.sh, vì vậy tôi sẽ chạy

chmod u+x test.sh

Bây giờ chúng ta đang ở trong cùng thư mục với tập lệnh, chúng ta phải chỉ định cho shell mà chúng ta muốn thực thi tệp bằng cách cho vị trí của nó ./(thư mục hiện tại theo sau là dấu phân cách đường dẫn, để phân biệt với tên tệp). Để chạy tập tin của tôi, tôi sẽ gõ:

./test.sh

Nếu tập lệnh của bạn đã được viết chính xác, nó sẽ chạy mà không có lỗi ...

Đây là một ví dụ trực tiếp: Đây là ví dụ trực tiếp


Điều này làm việc với tôi để cài đặt Netbeans trên
ubfox

1
Wb, @ RuD3B0y, tôi đã cố gắng giữ câu trả lời tốt nhất cho noobs, không có nội dung công nghệ cao, nếu bạn có một số chỉnh sửa, bạn được chào đón.
TheExorcist

4

2 bước chính.

  1. trong terminal, sử dụng gedit để viết và lưu tập lệnh với phần mở rộng ".sh" vào màn hình nền. (nhưng bất kỳ trình soạn thảo văn bản nào cũng có thể được sử dụng)

  2. mở Nautilus và nhấp chuột phải vào tệp script.sh.

    • trong thuộc tính, hộp kiểm "cho phép thực thi tập tin .."

    • trong menu Nautilus, nhấp vào tệp, sau đó tùy chọn, sau đó hành vi

    • kiểm tra "chạy các tệp văn bản thực thi khi chúng được mở".

Bây giờ, khi bạn nhấp đúp vào tệp trên máy tính để bàn, nó sẽ thực thi. không cần .hoặc./


3
  1. Nhấp chuột phải vào .shtệp và làm cho nó thực thi được.

  2. Mở một thiết bị đầu cuối ( Ctrl+ Alt+ T).

  3. Kéo .shtập tin vào cửa sổ terminal và xem một cách sợ hãi.


1
Chào mừng bạn đến hỏi Ubuntu! Tôi khuyên bạn nên chỉnh sửa câu trả lời này để mở rộng nó với các chi tiết cụ thể về cách thực hiện bước đầu tiên. (Xem thêm Làm thế nào để viết một câu trả lời tốt? Cho lời khuyên chung về những gì các loại câu trả lời được coi là có giá trị nhất trên AskUbuntu.)
David Foerster

3

Có một số cách để làm điều này.

lựa chọn 1

  1. Trong thiết bị đầu cuối, truy cập vào thư mục tệp Bash đang sử dụng cd(thay đổi thư mục).

    Ví dụ. cd Downloads

  2. Chạy bash <filename>.sh

    Điều này cũng hoạt động với các tập tin .run. Có một ví dụ về việc sử dụng này tại trang web này về việc cập nhật Rhybeatbox.

Tùy chọn 2

  1. Trong thiết bị đầu cuối, điều hướng đến thư mục tệp bash nằm trong.

  2. Chạy chmod +x <filename>.sh

  3. Trong Nautilus, mở tệp.


3

Đối với Ubuntu 18.04 , có một chút sửa đổi khi bạn không nhận được hộp thoại bật lên.

Vì vậy, những gì bạn cần làm là:

Nhấp chuột phải vào Tệp, Chọn Tùy chọn> Chọn Tab Hành vi> Đánh dấu tùy chọn 'Hỏi phải làm gì' trong tệp văn bản Thực thi.

Bây giờ, khi bạn nhấp đúp vào bất kỳ tệp .sh nào, bạn sẽ nhận được một cửa sổ bật lên, ở đó bạn có thể chọn tùy chọn "chạy trong thiết bị đầu cuối" để chạy tệp .sh của mình.

nhập mô tả hình ảnh ở đây


2

Trong Ubuntu 16.04, đây là cách mở nó trong Terminal:

Tới File Manager > Edit > Preferences > Behaviorcho Executable Text Filesvà chọn Ask each time.

Vấn đề là mặc định nó được đặt thành View Executable Files when they are opened.


1

Nếu bạn đặt tập lệnh shell của bạn hoặc tập lệnh thực thi khác mà bạn tạo trong / usr / local / bin, nó sẽ được tìm thấy và thực thi mà không phải cung cấp đường dẫn thư mục trong dòng lệnh hoặc thêm ./ vào tên. Ví dụ: tôi đã tạo tập lệnh bash 3 dòng đơn giản sau đây để hiển thị UUID đĩa:

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

Tôi gọi tập tin uuid và đặt nó vào / usr / local / bin. Tất cả tôi cần nhập vào dòng lệnh là:

uuid

0

Vâng, tôi cũng phải đối mặt với cùng một vấn đề. Tôi muốn thực thi tệp .sh và nó đã mở bằng Gedit trên CentOS 7. Vì vậy, đây là những gì tôi đã làm:

  1. Tôi đã điều hướng đến đường dẫn của .shtệp mà tôi muốn thực thi.
  2. Tôi mở thiết bị đầu cuối.
  3. Và tôi chỉ cần kéo và thả vào cửa sổ terminal và nó tự động lấy tập tin đó cùng với đường dẫn làm đầu vào.
  4. Nhấn Enter và bạn tốt để đi!

0

Vấn đề tôi gặp phải trên một vài bản phân phối là họ đã ẩn tùy chọn tùy chọn trong Nautilus, nhưng để sửa nó trong Ubuntu và các bản phân phối khác bằng Gnome3 thì giống nhau (nghĩa là chỉ cần thực hiện phiên bản Fedora này và đăng bản sửa lỗi thực tế để nhắc nhở tôi Làm thế nào trong tương lai).

  1. Tải về dconf-editor

    sudo apt-get install dconf-editor
  2. Chạy dconf-editorbằng tài khoản người dùng mà bạn muốn, tức là KHÔNG root

    dconf-editor
  3. Điều hướng đến lược đồ sau:

    org.gnome.nautilus.preferences

  4. Thay đổi tùy chọn mặc định để không mở theo mặc định:

    Tìm executable-text-activationnhấp vào từ displayvà thay đổi thànhask

Điều đó sẽ cung cấp cho bạn tùy chọn chỉnh sửa, xem hoặc chạy tệp trong tương lai


0

Tôi là một người mới trong Linux và tôi cũng gặp vấn đề tương tự. Nếu vẫn thất bại:

  1. Thiết bị đầu cuối mở
  2. Mở thư mục chứa tệp .sh
  3. Kéo và thả tệp vào cửa sổ terminal
  4. Đường dẫn của tệp xuất hiện trong thiết bị đầu cuối. Nhấn Enter.
  5. Voila, tập tin .sh của bạn đang chạy.

-2

Bạn cũng có thể sử dụng các .thủ thuật, với sự gợi ý của các câu trả lời khác.

Ví dụ:

chmod +x filename.sh, giả sử bạn đã đi đến đường dẫn đến tệp rồi chạy tệp với bất kỳ một trong các lệnh sau:

sh filename.sh

./filename.sh

. filename.sh

2
cảnh báo : Ba lệnh này không tương đương. Nếu shebang của bạn tham chiếu một nhị phân khác (như Stack), thì lệnh thứ ba sẽ thử phân tích cú pháp các đối số với Bash, sẽ thất bại.
Jezen Thomas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.