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
Đ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
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
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.