add: Supprimer une fonction shell avec unset
This commit is contained in:
+1
-1
@@ -1 +1 @@
|
||||
{"readable":true,"books":{"\/book\/esp":11,"\/book\/la-domotique-chez-soi":9,"\/book\/les-commandes-linux":9,"\/book\/linux-architecture-des-dossiers":8},"as":[{"asn":"","name":"LAN","country":"","hits":13163},{"asn":"14618","name":"AWS EC2 (us-east-1)","country":"US","hits":904},{"asn":"8075","name":"Cloud","country":"US","hits":877},{"asn":"32934","name":"Meta Platforms Ireland Limited","country":"US","hits":872},{"asn":"24940","name":"Hetzner","country":"FI","hits":399},{"asn":"16276","name":"OVH","country":"FR","hits":191},{"asn":"15169","name":"Google LLC","country":"US","hits":102},{"asn":"48230","name":"LLC MONOLITH.NET","country":"UA","hits":83},{"asn":"209366","name":"SEMrush CY LTD","country":"US","hits":80},{"asn":"50673","name":"Serveriuscustomer","country":"NL","hits":59},{"asn":"12322","name":"PROXAD-ADSL","country":"FR","hits":30},{"asn":"36352","name":"HostPapa","country":"US","hits":18},{"asn":"174","name":"Code 200, UAB","country":"FR","hits":12},{"asn":"18779","name":"EGIHosting","country":"US","hits":10},{"asn":"46261","name":"BraveWay","country":"US","hits":10},{"asn":"3209","name":"Vodafone Kabel Deutschland GmbH","country":"DE","hits":9},{"asn":"45102","name":"Alibaba.com LLC","country":"SG","hits":9},{"asn":"132203","name":"Tencent Cloud Computing (Beijing) Co., Ltd","country":"JP","hits":9},{"asn":"51207","name":"Free Mobile","country":"FR","hits":7},{"asn":"37054","name":"Telma Madagascar","country":"MG","hits":6},{"asn":"29695","name":"Lyse Tele AS","country":"NO","hits":5},{"asn":"41281","name":"KeFF Networks Ltd","country":"SE","hits":5},{"asn":"9443","name":"Vocus Retail","country":"AU","hits":5},{"asn":"16509","name":"Anthropic, PBC","country":"US","hits":4},{"asn":"396982","name":"Google Cloud (us-east5)","country":"US","hits":4},{"asn":"2119","name":"TELENOR-INTERNET","country":"NO","hits":4},{"asn":"58087","name":"Datalix","country":"DE","hits":4},{"asn":"15557","name":"SFR Infra","country":"FR","hits":3}]}
|
||||
{"readable":true,"books":{"\/book\/esp":11,"\/book\/la-domotique-chez-soi":9,"\/book\/les-commandes-linux":9,"\/book\/linux-architecture-des-dossiers":8},"as":[{"asn":"","name":"LAN","country":"","hits":13177},{"asn":"32934","name":"Meta Platforms Ireland Limited","country":"US","hits":880},{"asn":"8075","name":"Cloud","country":"US","hits":878},{"asn":"14618","name":"AWS EC2 (us-east-1)","country":"US","hits":871},{"asn":"24940","name":"Hetzner","country":"FI","hits":399},{"asn":"16276","name":"OVH","country":"FR","hits":191},{"asn":"15169","name":"Google LLC","country":"US","hits":102},{"asn":"48230","name":"LLC MONOLITH.NET","country":"UA","hits":83},{"asn":"209366","name":"SEMrush CY LTD","country":"US","hits":80},{"asn":"50673","name":"Serveriuscustomer","country":"NL","hits":59},{"asn":"396982","name":"Google Cloud (us-central1)","country":"US","hits":38},{"asn":"12322","name":"PROXAD-ADSL","country":"FR","hits":30},{"asn":"36352","name":"HostPapa","country":"US","hits":18},{"asn":"13188","name":"CONTENT DELIVERY NETWORK LTD","country":"UA","hits":15},{"asn":"210743","name":"Babbar SAS","country":"FR","hits":13},{"asn":"174","name":"Code 200, UAB","country":"FR","hits":12},{"asn":"18779","name":"EGIHosting","country":"US","hits":10},{"asn":"46261","name":"BraveWay","country":"US","hits":10},{"asn":"3209","name":"Vodafone Kabel Deutschland GmbH","country":"DE","hits":9},{"asn":"132203","name":"Tencent Cloud Computing (Beijing) Co., Ltd","country":"JP","hits":9},{"asn":"45102","name":"Alibaba.com LLC","country":"SG","hits":7},{"asn":"51207","name":"Free Mobile","country":"FR","hits":7},{"asn":"37054","name":"Telma Madagascar","country":"MG","hits":6},{"asn":"29695","name":"Lyse Tele AS","country":"NO","hits":5},{"asn":"41281","name":"KeFF Networks Ltd","country":"SE","hits":5},{"asn":"9443","name":"Vocus Retail","country":"AU","hits":5},{"asn":"16509","name":"Anthropic, PBC","country":"US","hits":4},{"asn":"2119","name":"TELENOR-INTERNET","country":"NO","hits":4},{"asn":"58087","name":"Datalix","country":"DE","hits":4},{"asn":"15557","name":"SFR Infra","country":"FR","hits":3}]}
|
||||
@@ -1 +1 @@
|
||||
{"fetched_at":1779067084,"version":"1.6.26"}
|
||||
{"fetched_at":1779187033,"version":"1.6.26"}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# Supprimer une fonction shell avec `unset`
|
||||
|
||||
*Comment supprimer une fonction en Bash ? Comment effacer, retirer ou désenregistrer une fonction shell ? Comment annuler la définition d'une fonction Bash ? Quelle est la différence entre supprimer une variable et supprimer une fonction avec `unset` ? Pourquoi `man unset` ne fonctionne pas ?*
|
||||
|
||||
En Bash, la commande intégrée `unset` sert à supprimer des variables, mais aussi des **fonctions**. Pour cibler explicitement une fonction, on utilise l'option `-f` (pour *function*) :
|
||||
|
||||
```bash
|
||||
unset -f foo
|
||||
```
|
||||
|
||||
## Quand `-f` est-il vraiment nécessaire ?
|
||||
|
||||
D'après la documentation de Bash, sans option, `unset` essaie d'abord de supprimer une variable, puis se rabat sur une fonction si aucune variable de ce nom n'existe.
|
||||
|
||||
Autrement dit, **`-f` n'est indispensable que si une variable et une fonction portent le même nom**. Dans le cas contraire, un simple `unset foo` suffit.
|
||||
|
||||
## Exemple complet
|
||||
|
||||
```bash
|
||||
# Définition d'une fonction
|
||||
foo() { echo "bonjour"; }
|
||||
|
||||
foo
|
||||
# → bonjour
|
||||
|
||||
# Suppression
|
||||
unset -f foo
|
||||
|
||||
foo
|
||||
# → bash: foo : commande introuvable
|
||||
```
|
||||
|
||||
Et voici le cas où `-f` fait toute la différence :
|
||||
|
||||
```bash
|
||||
foo="une variable"
|
||||
foo() { echo "une fonction"; }
|
||||
|
||||
unset foo # supprime la variable
|
||||
foo # → une fonction (la fonction existe toujours)
|
||||
|
||||
unset -f foo # supprime la fonction
|
||||
```
|
||||
|
||||
## Consulter la documentation
|
||||
|
||||
`unset` étant une commande interne à Bash (*builtin*), elle n'a ni page `man unset` ni option `--help`. Sa documentation se consulte avec :
|
||||
|
||||
```bash
|
||||
help unset
|
||||
```
|
||||
|
||||
## À retenir
|
||||
|
||||
- `unset -f nom` supprime explicitement une fonction.
|
||||
- `unset nom` suffit si aucune variable ne porte ce nom.
|
||||
- Pour la doc d'un builtin Bash : `help <commande>`, pas `man`.
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"uuid": "7a2f79a2-768c-4682-8640-1888f1ad5a9d",
|
||||
"slug": "supprimer-une-fonction-shell-avec-unset",
|
||||
"title": "Supprimer une fonction shell avec `unset`",
|
||||
"author": "cedric@abonnel.fr",
|
||||
"published": false,
|
||||
"featured": false,
|
||||
"published_at": "2026-05-19 10:37:27",
|
||||
"created_at": "2026-05-19 10:37:27",
|
||||
"updated_at": "2026-05-19 10:37:27",
|
||||
"revisions": [],
|
||||
"cover": "",
|
||||
"files_meta": [],
|
||||
"external_links": [],
|
||||
"seo_title": "",
|
||||
"seo_description": "",
|
||||
"og_image": "",
|
||||
"category": "",
|
||||
"tags": []
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user