簡體   English   中英

exec shell命令的選項-l

[英]Option -l of exec shell command

您能否闡明exec shell命令的-l選項的用法。 我在exec ls | cat時沒有發現任何差異exec ls | cat exec ls | catexec -l ls | cat exec -l ls | cat

exec-l選項在命令名稱的開頭添加- 例如:

exec -l diff | head

-diff: missing operand after '-diff'
-diff: Try '-diff --help' for more information.

注意diff之前的-處。

這一切的重點? 如果在啟動外殼程序的命令前有- ,它將作為登錄外殼程序。 來自man bash

登錄外殼是一個參數為零的第一個字符為-的外殼程序,或以--login選項開頭的外殼程序。

現在, man exec指出:

如果提供了-l選項,則外殼程序在傳遞給command的第零個參數的開頭放置一個破折號。 這就是login(1)所做的。

因此exec -l bashbash作為登錄shell運行。 為了測試這一點,我們可以使用登錄bash執行文件~/.bash_profile的事實,因此:

$ cat ~/.bash_profile 
#!/bin/sh

printf "I am a login shell!\n"

如果我啟動登錄bash,將執行命令printf "I am a login shell!\\n" 現在使用exec進行測試:

$ exec bash
$

什么都沒有顯示,我們在非登錄外殼上。

$ exec -l bash
I am a login shell!
$

在這里,我們有一個登錄外殼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM