Làm cách nào để mở phiên bash ẩn danh?


50

Có thể mở một phiên ẩn danh trong bash?

Ví dụ: khi chúng ta cần nhập mật khẩu vào các lệnh và không muốn bashthêm chúng vào lịch sử.


9
cat | bashsẽ chạy không tương tác bashmà không cần nhắc nhở, chỉnh sửa dòng lệnh (chỉ là trình chỉnh sửa nội bộ của dòng kỷ luật) hoặc lịch sử.
Stéphane Chazelas

Viết một khoảng trắng trước lệnh của bạn: 'Secretcommand'. Bây giờ secrectcommandsẽ không có trong lịch sử bash.
Martin Thoma

Câu trả lời:


79

Khi bạn muốn bashdừng ghi nhật ký các lệnh của mình, chỉ cần bỏ đặt HISTFILEbiến:

HISTFILE=

Tất cả các lệnh tiếp theo sẽ không còn được đăng nhập .bash_history.

Mặt khác, nếu bạn thực sự cung cấp mật khẩu làm đối số cho các lệnh, thì bạn đã làm sai điều gì đó. .bash_historykhông thể đọc được trên thế giới và do đó không phải là mối đe dọa lớn nhất trong tình huống này:

ps/proclà vấn đề lớn Tất cả người dùng trên hệ thống có thể thấy các lệnh bạn hiện đang chạy với tất cả các đối số của họ . Do đó, việc truyền mật khẩu dưới dạng đối số dòng lệnh là không an toàn . Sử dụng các biến môi trường hoặc tệp cấu hình (mà bạn đã biên dịch 600) để cung cấp mật khẩu an toàn.


5
Tôi đã sử dụng Linux hơn 10 năm và chưa bao giờ nghĩ sẽ làm điều này +1
eyoung100

3
unset HISTFILEcó tác dụng tương tự. Tôi có một chức năng cho việc này : n() { HISTFILE=; PS1="~${PS1#\~}"; }. Bằng cách đó tôi có thể thấy rõ mình có đang ở "chế độ ẩn danh" hay không.
Lekensteyn

13
+1 để giải quyết vấn đề thực sự thay vì chỉ trả lời câu hỏi. Một tùy chọn bổ sung để chuyển xung quanh thông tin đăng nhập là ổ cắm tên miền Unix.
Nathan Osman

1
Một mẹo hữu ích khác là đặt một khoảng trắng trước tức là "HISTFILE =". bất kỳ lệnh nào có khoảng trắng trước khi không được ghi lại.
FUD

Một điều thú vị khác về điều này là ngay cả các lệnh trước đó trên cửa sổ đó cũng bị bỏ qua. Nó giống như chuyển phiên hiện có sang ẩn danh: p
Uzumaki D. Ichigo

37
HISTCONTROL=ignorespace

Nếu tùy chọn này chưa được đặt bash, nó có thể chỉ là những gì bạn cần. Nó ít gây suy nhược hơn là vô hiệu hóa tất cả lịch sử. Với bộ đó, bất kỳ dòng lệnh nào bắt đầu bằng ký tự khoảng trắng sẽ không được lưu vào danh sách lịch sử.

Từ các liên kết liên quan:

Tại sao bash có tùy chọn HISTCONTROL = bỏ qua không gian?

Tại sao bash không lưu trữ các lệnh bắt đầu bằng dấu cách?


6
Lưu ý điều này thường là mặc định.
Ángel

3

Bạn có thể tạm thời vô hiệu hóa lịch sử: set +o history

set +o history
...
set -o history

Có một sự khác biệt giữa vô hiệu hóa lịch sử và bỏ đặt HISTFILE:

HISTFILE=
date
ls
HISTFILE=~/.bash_history
history

xuất ra một cái gì đó như thế này:

84  HISTFILE=
85  date
87  ls
88  HISTFILE=~/.bash_history
89  history

tức là tất cả các lệnh được lưu trong danh sách lịch sử. Nhập exitđể lưu nó.
Nhưng

set +o history
date
ls
set -o history
history

xuất ra một cái gì đó như thế này:

115  set +o history
116  history

Tóm tắt :
set +o historycho các phiên dài.
HISTCONTROL<space>commandvào thời điểm khác.

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.