Câu hỏi Không thể sử dụng “./” để thực thi tập lệnh shell


Có lẽ ai đó ở đây có thể giúp tôi. Đã cài đặt Ubuntu 12.04 LTS (kubuntu) trên hai máy. Các tệp .bashrc và .bash_profile giống hệt như cấu trúc tệp trên mỗi máy giống nhau.

Trên máy 1, tôi chạy các tập lệnh bash trong một cửa sổ đầu cuối với lệnh đơn giản: ./scriptname.sh

Trên máy 2, tôi không thể làm điều này và phải sử dụng: sh scriptname.sh Tôi cũng không thể sử dụng ./ và tab-hoàn thành tên tập lệnh.

Tất cả các bit thực thi được đặt chính xác, tất cả các tệp và thư mục đều có quyền chính xác. Trong tiêu đề của tập lệnh, shebang được đặt chính xác.

Bất kỳ ý tưởng tại sao điều này sẽ xảy ra?

Chúc mừng


4
2017-11-05 01:23


gốc


cũng được hỏi về unix & linux và stackoverflow - glenn jackman
Đây có phải là root hay người dùng không phải root không? Làm echo $SHELL trên cả hai máy xác nhận rằng vỏ là bash? - Lars Rohrbach
người dùng không phải root, echo $ SHELL trả về / bin / bash trên cả hai máy - adeliefan


Các câu trả lời:


Điều duy nhất có thể gây ra điều này là nếu kịch bản không thực thi được. Tôi biết bạn nói rằng bit thực thi được thiết lập, nhưng hãy chắc chắn:

chmod +x scriptname.sh

2
2017-11-05 02:07



Không - chắc chắn nó đã đúng. Tôi thấy có phải là một cái gì đó sai trái với môi trường của tôi thiết lập (bashrc hoặc. Bash_profile) nhưng không thể nhìn thấy nơi nó đã snuck in. - adeliefan


Tôi đã đọc các vấn đề khác nhau phát sinh khi tự động hoàn thành, không nhất thiết với 12.04 và hai tùy chọn sau có vẻ đáng thử:

Lần thử đầu tiên vô hiệu hóa hoàn thành lập trình bash: Nhận xét ba dòng này trong cả hai /etc/bash.bashrc và trong người dùng $HOME/.bashrc:

 if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
     . /etc/bash_completion
 fi

Bạn có thể thấy rằng những dòng đó đã được nhận xét với # ở phía trước, trong trường hợp đó chỉ để nó như là.

Vì vậy, thứ hai, hãy thử cài đặt lại hoàn thành bash:

sudo apt-get purge bash-completion
sudo mv /etc/bash_completion.d /etc/bash_completion.d.bak
sudo apt-get install bash-completion

1
2017-11-05 02:13



Cảm ơn Lars đề nghị, nó không có sự khác biệt. - adeliefan
Vâng, darn. Tôi cho rằng bạn đã đăng nhập lại sau khi thực hiện việc này? - Lars Rohrbach


Các lỗi bạn thấy có thể được gây ra bằng cách cố chạy một tệp thực thi trên phương tiện được gắn với thuộc tính "noexe". Loại gắn kết và kiểm tra các thuộc tính của thiết bị chứa tập lệnh. Thay đổi thuộc tính / etc / fstab của mount nếu cần.


1
2017-11-05 05:59